1.相关概念(在AES算法中)

信息矩阵明文按照特定规则排列成的矩阵。

密钥矩阵密钥按照特定规则排列成的矩阵。

  • 接下来,拿下面的例子举例一下: 明文:ABCDEFGHIJKMNOP 密钥:16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1

AES在线求密钥 aes算法密钥长度_16进制

 

  对于给定的明文和密钥,首先需要将明文按照特定规则填充成一个4×4的矩阵,称为信息矩阵。填充规则是按照列优先的方式进行填充,如果明文长度不足16个字符,会使用特定字符(例如空格)进行填充。这里的例子中明文长度已经满了16个字符了。

  在这个例子中,信息矩阵如下:

A  E  I  M
 B  F  J  N
 C  G  K  O
 D  H  L  P  这种矩阵一般都是用16进制表示的,将上面的矩阵根据上面图片中的ASCII转为16进制,举个例子,A是65,也就是16*4+1(权重是16*(位数-1)),A可以表示成41,同理B是42,以此类推,又因为16进制从10开始就用abcdef表示了,所以J开始的74(16*4+10)就表示成4a,以此类推直到O(79,也就是16*4+15)4f,P就表示成50了(16*5+0)。
  综上所述,16进制的信息矩阵为:
41 45 49 4d
42 46 4a 4e
43 47 4b 4f
44 48 4c 50
  接下来,将密钥也填充成一个4×4的矩阵,称为密钥矩阵。填充规则是按照列优先的方式进行填充。在这个例子中,密钥矩阵如下:
16  12   8   4
 15  11   7   3
 14  10   6   2
 13   9   5   1  转成16进制后,同上,16就是16*1+0,表示成10,15就是0*16+15(f),也就是0f,以此类推:
10 0c 08 04
0f 0b 07 03
0e 0a 06 02
0d 09 05 01
  然后,通过AES算法的一系列步骤,将信息矩阵和密钥矩阵进行运算,最终得到密文。
• 这边以通过密钥加变换第一列得到密文举例
• 密钥加:就是异或运算
  这里同样是16进制的运算,上面已经得到了信息矩阵和密钥矩阵,密钥加变换第一列就是取这两矩阵的第一列进行异或运算。
  已知信息矩阵(明文)第一列:
41
42
43
44
  已知密钥矩阵(密钥)第一列:
10
0f
0e
0d

  在16进制中,异或运算是对应位进行异或操作,结果为1的条件是两个对应位的数值不同,结果为0的条件是两个对应位的数值相同。

(不同1,同0)
对于16进制数的异或运算,可以将其转换为二进制进行计算,然后再转换回16进制。
以16进制数 41 和 10 的异或运算为例:
首先将 41 和 10 分别转换为二进制:
 41(16进制)= 0100 0001(二进制)
 10(16进制)= 0001 0000(二进制)然后将两个二进制数进行异或运算:
 0100 0001 XOR 0001 0000 = 0101 0001(二进制)最后将异或运算的结果转换回16进制:
 0101 0001(二进制)= 51(16进制)所以,16进制数 41 和 10 的异或结果是 51(16进制)。