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.轮密钥加。即将上一步得到的矩阵的每一列和与子密钥矩阵异或操作。
文章图片
文章图片
- 若不是4的倍数
文章图片
- 若是4的倍数,则要进行字循环;字节代换;轮常量异或。上面三步称为T函数,再将T函数得到的结果和W[i-4]异或。细节来说,就是先对W[i-1]即前一列数据循环左移一个字节;再对字循环结果使用S盒进行字节代换;再同轮常量进行异或。将得到的结果再和W[i-4]异或。
文章图片
文章图片
文章图片
文章图片
推荐阅读
- 物联网|Esp8266接入OneNet调试、Arduino接入OneNet平台[有用]
- CTF|2021年第四届“安洵杯”网络安全挑战赛Writeup
- web安全|2022 Real World CTF体验赛Writeup
- hack|安全测试者偏爱的安全测试工具
- java|我们一起学一学渗透测试——基础概念
- 安全|Kali Linux工具大全-信息收集
- python|【十年网络安全工程师整理】—100渗透测试工具使用方法介绍
- 计算机网络|用白话讲(HTTP/1.1 如何优化(【图解】))
- 前端|手把手教你撸一个网页聊天室