AES算法描述

AES-128使用128位密钥加密128位数据,通过10轮迭代,每轮包括AddRoundKey、SubBytes、ShiftRows和Mixcolumns四个步骤。SubBytes是非线性变换,ShiftRows进行字节循环移位,Mixcolumns则对列进行混合运算。密钥扩展生成各轮密钥,通过SubWord和RotWord函数进行扩展。
摘要由CSDN通过智能技术生成

AES加密算法的结构

AES-128使用128bits加密128bits的明文分组,数据和密钥均用一个 4 × 4 4 \times 4 4×4 的字节矩阵表示。AES是一个密钥迭代型密码算法,这意味着轮变换将会反复应用于状态,AES计算采用了10轮迭代,每一轮迭代使用一个轮密钥,轮密钥由密钥扩展算法产生。解密过程的工作原理与加密过程的工作原理类似,但是,解密过程必须以与加密过程相反的顺序应用各轮密钥,且使用轮变换的逆变换。

轮变换

轮变换包含4个步骤,分别为轮密钥加(AddRoundKey)、字节替换(SubBytes)、行移位变换(ShiftRows)和混合列变换(Mixcolumns)。

AES-128(byte in[16], byte out[16], word w[44])
	byte state[4,4];
	state = in;
	AddRoundKey(state,w[0,3])
	for round = 1 step 1 to 9
		SubBytes(state)
		ShiftRows(state)
		Mixcolumns(state)
		AddRoundKey(state, w[round * 4, (round + 1) * 4 -1])
	end
	SubBytes(state)
	ShiftRows(state)
	AddRoundKey(state, w[40, 43])
	out = state;

轮密钥加(AddRoundKey)

本变换对轮密钥与状态进行异或操作。初始的AddRoundKey操作使用的轮密钥即算法本身的原密钥。轮密钥的长度等于数据分组的长度,即128比特。
例:
[ 87 F 2 4 D 97 6 E 4 C 90 E C 46 E 7 4 A C 3 A 6 8 C D 8 95 ] ⊕ [ 17 89 E 3 88 9 F 29 60 C E 5 A 94 D 6 2 E 24 64 61 2 A ] → [ 90 7 B A E 1 F F 1 65 F 0 22 1 C 73 9 C E D 82 E 8 B 9 B F ] { \left[ \begin{array}{cccc} 87&F2 & 4D & 97\\ 6E & 4C &90 & EC\\ 46 & E7 & 4A& C3 \\ A6& 8C & D8 & 95 \\ \end{array} \right ] \oplus \left[ \begin{array}{cccc} 17 & 89 & E3 & 88 \\ 9F & 29 & 60 & CE \\ 5A & 94 & D6 & 2E \\ 24 & 64 & 61 &2A \\ \end{array} \right ] \rightarrow \left[ \begin{array}{cccc} 90 & 7B & AE & 1F \\ F1 & 65 &F0 & 22\\ 1C & 73 & 9C & ED \\ 82 &E8 & B9 & BF \\ \end{array} \right ]} 876E46A6F24CE78C4D904AD897ECC395 179F5A2489299464E360D66188CE2E2A 90F11C827B6573E8AEF09CB91F22EDBF

字节替换(SubBytes)

本变换分别对状态的每一个字节进行替换,它是轮变换中唯一的非线性变换。该非线性变换也称为S盒。
输入字节形式为xy的S盒表(16进制)

x\y 0 1 2 3 4 5 6 7 8 9 a b c d e f
0 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76
1 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
2 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
3 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
5 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
6 d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
7 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2
8 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
9 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
a e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
b e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
c ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
d 70 3e b5 66 48 03 f6 0e 61 35 57 69 86 c1 1d 9e
e e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
f 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16

例:
[ 87 F 2 4 D 97

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_74043383

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值