AES算法介绍,AES算法介绍,AES算法介绍
AES 加密算法 AES(Advanced Encryption Standard)是一种高级加密标准,用于保护电子数据的安全。AES 算法是一种对称密钥块密码,使用 128、192 和 256 位密钥,可以对 128 位(16 个字节)的数据块进行加密和解密。 AES 加密算法主要步骤: 1. 给定一个明文 x,将 State 初始化为 x,并进行 AddRoundKey 操作,将 RoundKey 与 State 异或。 2. 对前 Nr-1 轮中的每一轮,用 S 盒对进行一次代换操作,称为 SubBytes;对 State 做一置换 ShiftRows;再对 State 做一次操作 MixColumns;然后进行 AddRoundKey 操作。 3. 依次进行 SubBytes、ShiftRows 和 AddRoundKey 操作。 4. 将 State 定义为密文 y。 KeyExpansion () 实现: 1. 要求将 128 bit 的密钥扩展至加密过程中的 9 轮循环,再上初始及最后 2 轮,需构造 11 轮密钥。每一轮密钥由 4 个字组成。每个字由 4 个 byte 组成。 2. 算法设计输入:byte[] key, byte[] w //key 为密钥 w 为扩展的密钥输出:byte[] w //扩展密钥 长度为 4 * 4 * 11 处理: 1. 建立一个 4 byte 的一维数组,存放一个字。 2. 将密钥 key[0..15] 送至 w[0..15];//已赋值 4 个字给 w。 3. for I = 4 to 43 //以下每次处理一个字(32 bit) temp = w[I-1]; if (I = 0 mod 4) //处理一个字 then for j = 1 to 4 //字的 4 byte 处理在此循环中取 temp 数组下标的次序为 1,2,3,0 //RotWord 操作 如果是字的首 byte,取 Rcon 常数 Rcon(I/4); temp[j] = Sbox(temp[ (j + 1) /4]^Rcon 常数 end for temp = SubWord(RotWord(temp))⊕Rcon[i/4] w[I] = w[I-4]⊕temp; end for 多项式乘法 mod GF(2^8) 运算: 1. 要求将两个 byte 在有限域 GF(2^8)按多项式乘法,并 mod 不可约多项式 m(x)=x^8+x^4+x^3+x+1。 2. 算法设计输入:byte a ,byte b 输出:byte r 数学基础:GF(2^8) 有限域性质: * 两个元素的加法与两个字节按位模 2 加是一致的。 * 乘法满足结合律。 * 考虑多项式中的一项 aixi(i∈0-7),用一次 x 乘以多项式:b(x) = b7x^7 + b6x^6 + b5x^5 + b4x^4 + b3x^3 + b2x^2 + b1x + b0,得到 b7x^8 + b6x^7 + b5x^6 + b4x^5 + b3x^4 + b2x^3 + b1x^2 + b0x (式 1) * 将结果模 m(x)求余得到 x*b(x)。 * 如果 b7 = 0,则式 1 就是 x*b(x)。 * 如果 b7 不等于 0,则必须从式 1 中减去 m(x)后结果为 x*b(x)。 * 用 x 乘一个多项式简称 x 乘。 * 由此得出,aixi 乘以 b(x),可以作 i 次 x 乘。 * x(十六进制表示为 0x02)乘可以用字节内左移一位和紧接着的一个与 0x1b 的按位模 2 加来实现,该运算暂记为 xtime()。X 的更高次的乘法可以通过重复 xtime() 来实现。
















- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源



评论0