AES(Advanced Encryption Standard)加密算法
参考 “【AES加密算法】| AES加密过程详解| 对称加密| Rijndael-128| 密码学| 信息安全” https://www.bilibili.com/video/BV1i341187fK?from=search&seid=14609524973320441322
参考 《密码编码与信息安全——C++实践》
基本原理
- AES属于分组加密算法,属于对称加密,故在传递密钥途中有密钥泄露的风险
- 明文plainText和密文cipherText固定长度为128bit(16B)
- 密钥长度为128,192,256bit,密钥长度会改变算法循环次数,分别对应10/12/14轮循环
加密过程
-
先将16Byte(一个字节是一个0xFF)数据合成一个矩阵,再进行后续计算
-
以密钥为128bit为例,进行10轮循环,包含9轮循环运算和1轮最终轮运算,在最终轮运算中只进行1,2,4步骤(不进行列混合步骤)
-
初始变换。将明文矩阵和密钥矩阵按字节中每一位异或。
-
9轮循环中1.字节代换。这是一个S盒代换,是一个非线性代换。
如将(0, 0)处19查S盒后替换。 -
9轮循环中2.行移位。将每一行字节按照字节循环左移。
-
9轮循环中3.列混合。将上一步得到的矩阵左乘一个矩阵(不是矩阵点乘的相乘相加)。而是相特殊乘(01相乘就是本身,无需管)再相互异或。
-
9轮循环中4.轮密钥加。即将上一步得到的矩阵的每一列和与子密钥矩阵异或操作。
密钥生成
使用密钥扩展得到10轮的密钥。将原初始密钥矩阵逐字节列向右边列扩展,根据该列是否是4的倍数扩展方式不同。如果是4的倍数则比较麻烦,如果不是4的倍数则需要进行异或操作。
文章来源:https://www.toymoban.com/news/detail-446168.html
- 若不是4的倍数
- 若是4的倍数,则要进行字循环;字节代换;轮常量异或。上面三步称为T函数,再将T函数得到的结果和W[i-4]异或。细节来说,就是先对W[i-1]即前一列数据循环左移一个字节;再对字循环结果使用S盒进行字节代换;再同轮常量进行异或。将得到的结果再和W[i-4]异或。
文章来源地址https://www.toymoban.com/news/detail-446168.html
到了这里,关于AES加密算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!