AES算法分析
标签(空格分隔): Reverse Crypto 对称加密
AES简介
-
AES是一种对称分组加密,明文长度为128位(16字节),密钥长度为16/24/32字节均可,通过置换与替换迭代加密,经过多轮操作形成密文。加密大体流程:
- 扩展输入密钥
- 通过多轮循环加密密文
-
不同长度密钥对应加密轮数如下表
AES 密钥长度(bit) 分组长度(bit) 加密轮数 AES-128 128 128 10 AES-192 192 128 12 AES-256 256 128 14 -
为了方便讨论,之后我们的所有例子都是针对AES-128的。
AES加密流程
AES密钥扩展
-
AES密钥扩展主要是将密钥从NbNk字节扩充为Nb(Nr+1)字节,对于AES-128,Nb=4,Nk=4,Nr=10。
-
首先定义一个4个dword大小的数组w,用于存放初始密钥key(unsigned char的数组),此处使用拷贝的办法,部分程序采用将四个byte合并为一个dword的办法
for (int i=0;i<Nk;i++){ w[i*4]=key[i*4]; w[i*4+1]=key[i*4+1]; w[i*4+2]=key[i*4+2]; w[i*4+3]=key[i*4+3]; }
-
之后对w进行扩充,扩充40列,流程如下: