高级数据加密标准AES.pptVIP

  • 2
  • 0
  • 约9.7千字
  • 约 63页
  • 2019-12-24 发布于广东
  • 举报
* * 西安电子科技大学计算机学院 * 实现 可以在32-bit CPU上有效实现 重新定义步骤以适应32-bit的字长 可以预先计算256个字的四个表 then each column in each round can be computed using 4 table lookups + 4 XORs 4Kb用于存储表 设计者认为在AES大选中有效实现是一个关键因素 * * * * * * * * * * * * * * * * * * * 例如当 Nb=4 时,具体的操作如下: 轮函数:行移位( ShiftRow ) * MixColumn(列混合) 将状态的列看作是有限域GF(28)上的多项式a(x),与多项式c(x)=03 x 3+01 x 2+01 x+02相乘(模x4+1)。 令b(x) = c(x) × a(x),写成矩阵形式为: b0 02 03 01 01 a0 b1 = 01 02 03 01 a1 b2 01 01 02 03 a2 b3 03 01 01 02 a3 * Fig 8. MixColumn 这一运算作用在每一列上 A0,0 A0,1 A0,2 A0,3 A1,0 A1,1 A1,2 A1,3 A2,0 A2,1 A2,2 A2,3 A3,0 A3,1 A3,2 A3,3 B0,0 B0,1 B0,2 B0,3 B1,0 B1,1 B1,2 B1,3 B2,0 B2,1 B2,2 B2,3 B3,0 B3,1 B3,2 B3,3 × C(X) * 图 3.21 列混合运算示意图 列混合( MixColumn ) * 列混合运算 * 列混合运算 * 2.4 AddRoundKey(轮密钥加) 将轮密钥与状态按比特异或。轮密钥是通过Key Schedule过程从密码密钥中得到的,轮密钥长度等于分组长度。 * A0,0 A0,1 A0,2 A0,3 A1,0 A1,1 A1,2 A1,3 A2,0 A2,1 A2,2 A2,3 A3,0 A3,1 A3,2 A3,3 K0,0 K0,1 K0,2 K0,3 K1,0 K1,1 K1,2 K1,3 K2,0 K2,1 K2,2 K2,3 K3,0 K3,1 K3,2 K3,3 + B0,0 B0,1 B0,2 B0,3 B1,0 B1,1 B1,2 B1,3 B2,0 B2,1 B2,2 B2,3 B3,0 B3,1 B3,2 B3,3 A3,3 + K3,3 = B3,3 (mod 2) * 密钥加是将轮密钥简单地与状态进行逐比特异或。 轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度 Nb 。 状态说与轮密钥 RoundKey 的密钥加运算表示为 AddRoundKey(State, RoundKey) 密钥加( AddRoundKey ) * 密钥加( AddRoundKey ) * Fig 7. Rijndael加密及解密的标准结构 Block , Key Length = 128 bits Plaintext(128 bits) ByteSubstitution MixColumn + Ciphertext(128 bits) K0 Ki i=10 ByteRotation for i=1 to 10 Ciphertext(128 bits) K10 InvMixCoumn InvByteRotation InvByteSubstitution + + Ki + Plaintext(128 bits) i = 9 for i=9 to 0 加密 解密 * 用伪代码表示的Rijndael加密算法 Rijndael ( State, CipherKey ) { KeyExpansion ( CipherKey, ExpandedKey ); AddRoundKey ( State, ExpandedKey ); For ( i=1; iRnd; i++ ) Round ( State, ExpandedKey + Nb*i ); FinalRound ( State, ExpandedKey + Nb*

文档评论(0)

1亿VIP精品文档

相关文档