AES加密的详细过程是咋样的
r3aYXWQ6DfiL0J6iYE2weZUs537glNkwHIR6ajmfM4xsKOPvyltsHDqJT75XJiRT
■网友
sOBq1c9n7+/R7ijbUIPQLfBNmK0OYnXcN/GdQfs1noZU/OtZwkloR8WQ+4aTUgOLBuK+/XG8boRJyLLPa7hEGRiiytdoBmwv8y+5fg28UY83cfWAA1lnU2f1B7h6H5qN6EnD+2LoRDdlaAnH4+x+CbEldY1zpGPbfW5ROTHQdwY=
■网友
AESAES,全称Advanced Encryption Standard,高级加密标准,是NIST(美国国家标准与技术研究院)在2001年推出的标准,内容见《ADVANCED ENCRYPTION STANDARD (AES)》。但其实在1997年的时候NIST就公开征集更安全的加密算法以替代DES,经过3年的时间的验证,最终决定采用Rijndael算法。因此,有时候在网上搜索AES算法,会看见Rijndael这个名词。实际上:AES=Rijndael算法子集。
Rijndael算法最初是由比利时学者Joan Daemen和Vincent Rijmen所提出的,算法的名字就由两位作者的名字组合而成。这个算法是基于代换-置换网络(Substitution-permutation network,SPN)的迭代算法,说人话:AES就是循环地对矩阵/向量做查表替换、位运算、矩阵乘积的过程。
AES 概览先看看AES加密算法全过程的图(图摘自matt-wu/AES):
AES round概览一步步来拆解:
图左侧(蓝色)部分是对明文的处理。首先,D_i是一个明文byte(=8bit),一共有16个D_i,也就是下方4X4的矩阵,这个矩阵被称为state,换算过来就是16x8=128bits(就是AES一个block的大小)。其次,每一个round(轮函数)就是一套数据操作,简单理解为“加、减、乘、除”,而每一个round的输入是上一个round的输出,换言之,最初state是明文,round目的就是不停修改state内容。图右侧(红色)部分是对密钥的处理。首先,K_i是一个密钥byte(=8bit),对图中AES-128(也就是密钥长度128bit的加密算法,平时我们常接触到的是就是AES-128)一共有16个K_i(AES-192就是24个,AES-256是32个)。密钥的结构和state相似,也是16x8=128bits,和block大小相同,被称为roundkey(轮密)。其次,每一个round(轮函数)结束后,roundkey也会被修改,对应的修改算法/过程被称为密钥扩展算法(Key Expansion/Schedule)。AES round(轮函数) - 明文加密过程先看一个完整的round,了解了一个完整的round过程,等于了解了基本AES的明文加密过程(图摘自《Symmetric-key cryptography》):
AES 轮函数一个完整的round分为4个步骤:
1. SubBytes:逐字节替换。
查找一张内置的表格,把state每个byte逐一替换为表格对应的byte。这个内置的表格叫做S-box(lookup table),是一张16X16的常量表格,内容如下(图摘自《Rijndael S-box》):
【AES加密的详细过程是咋样的】
AES S-box之前已经介绍过:state是一张4X4的byte矩阵。一个byte可以拆成4bits+4bits,也就是+的拼接(4个bit可以表示的数值范围:0~(2^4)-1,表示为十六进制就是0~F),分别代表的是S-box的x轴和y轴。查找的过程就是:首先根据state原byte的前4bit和后4bit的数值内容作为S-box的x和y下标查找得到目标byte,接着用这个目标byte去替换掉state原byte。过程示意图如下:
AES 查找S-box过程2. ShiftRows:平移行。
推荐阅读
- aes对称加密,需要加签名验证防止篡改吗如果需要该咋签名才是最好的方案
- 花生|血压高的人,吃花生是降血压还是升血压?医生详细做出解答
- 国内自主品牌|红旗H9用谁的发动机?详细拆解之后,请正视国产的实力
- 哈尔滨市继红小学公布诺如病毒详细感染情况 绝大多数感染者已无明显症状
- 汽车|起售价6.99万元,详细分析长安欧尚X5是否值得购买
- 汽车知识|厦门平行进口2020款中东版途乐4.0 XE实车最详细用心细节图来了
- 老吴说车荐车|欧蓝德真的好吗?16.03万值吗?本文给你详细剖析!
- 疾控|扬州新增1例,详细轨迹公布!
- 平安大邑|年检新政,超详细解读来啦!必懂+必收藏!
- 老吴说车荐车|KX3傲跑好不好?用车3个月,车主详细说了它的特点!