AES算法简介
创作时间:
作者:
@小白创作中心
AES算法简介
引用
1
来源
1.
https://www.cnblogs.com/OneFri/p/5924605.html
AES(高级加密标准)是一种对称加密算法,广泛应用于数据加密领域。本文将详细介绍AES算法的结构、变换函数、密钥扩展以及等价的解密算法,帮助读者深入理解这一重要的加密技术。
一、AES的结构
- 总体结构
- 明文分组的长度为128位即16字节,密钥长度可以为16,24或者32字节(128,192,256位)。根据密钥的长度,算法被称为AES-128,AES-192或者AE-256。
明文密钥组织方式
一些相关的的术语定义和表示
- 状态(State):密码运算的中间结果称为状态。
- State的表示:状态用以字节为基本构成元素的矩阵阵列来表示,该阵列有4行,列数记为Nb。 Nb=分组长度(bits)÷ 32。Nb可以取的值为4,对应的分组长度为128bits。
- 密码密钥(Cipher Key)的表示: Cipher Key类似地用一个4行的矩阵阵列来表示,列数记为Nk。Nk=密钥长度(bits)÷32。Nk可以取的值为4,6,8,对应的密钥长度为128, 192, 256 bits。
- 详细过程
- 由四个不同的变换组成,包括一个置换和三个替代:
- 字节代替(SubBytes): 用一个S盒完成分组的字节到字节的代替。
- 行移位(ShiftRows):一个简单的置换。
- 列混淆(MixColumns):利用域GF(28)上的算术特性的一个代替。
- 轮密钥加(AddRoundKey):当前分组和扩展密钥的一部分进行按位XOR(异或)。
- 输入的密钥被扩展成由44个32位子所组成的数组w[i],由上图可知,每轮有四个不同的字(128位)作为该轮到密钥。
- 对加密和解密的操作,算法由轮密钥加开始,接着执行9轮迭代运算,每轮都包含所有4个阶段的代替,接着是第10轮的三个阶段。
- 仅仅在轮密钥加阶段使用密钥。由于这个原因,该算法以轮密钥加开始,以轮密钥加结束。
二、AES的变换函数
- 字节替代
- 正向和逆向变换。被称为字节代替的正向字节代替变换是一个简单的查表操作。
- 映射方式:把该字节的高4位作为行值,低4位作为列值,以这些行列值作为索引从S盒中对应位置取出元素作为输出。例如,十六进制数{95}所对应的S盒的行值是9,列值是5,S盒中在此位置的值是{2A},相应的{95}被映射为{2A}。
- 下面是一个字节代替的例子:
- 行移位
- 正向和逆向变换。正向行移位,state的第一行保持不变。把state的第二行循环左移一个字节,state的第三行循环左移两个字节,state的第四行循环左移三个字节。
- 行移位变换的例子:
- 逆向行移位将state中的后三行执行相反方向的移位操作,如第二行向右循环移位一个字节,其他类似操作。
- 列混淆
- 正向和逆向变换。
- 列混淆变换的正向列混淆变换对每列独立地进行操作。每列中的每个字节被映射为一个新值,此值由该列中的4个字节通过函数变换得到。
- 列混淆例子:
- 计算过程:
注意: G(28)上的运算47 = (02•87)⊕(03•6E)⊕(01•4A)⊕(01•A6) 其中: 02•87 = 02•10000111B= 00001110B⊕00011011B= 00010101B= 15 03•6E = (01⊕02)•6E = (01•6E)⊕(02•6E) = 01101110B⊕(11011100B) = 10110010B= B2 01•46 = 46 01•A6 = A6 15⊕B2⊕46⊕A6 = 47 - 加法:按位异或
- 乘法:可通过对多个中间结果的移位运算和异或一个特定的比特串(比如00011011)实现。(与最高位b7有关)
- 逆向列混淆变换可以再乘以矩阵的逆得到
- 轮密钥加
- 正向和逆向变换。
- 在轮密钥加中,128位的state按位与128位的轮密钥XOR。
- 逆向轮密钥加变换是和正向轮密钥加变换一样的,因为异或操作是其本身的逆。
A⊕B⊕B = A - 单轮AES输入:
- 用伪代码表示的Rijndael加密算法
Rijndael ( State, CipherKey ) { KeyExpansion ( CipherKey, ExpandedKey ); AddRoundKey ( State, ExpandedKey ); For ( i=1; i<Rnd; i++ ) Round ( State, ExpandedKey + Nb*i ); FinalRound ( State, ExpandedKey + Nb*Rnd ); }
三、密钥扩展
密钥扩展伪代码描述
KeyExpansion ( byte, Key[16],word w[44] )
{
word temp;
for (i = 0;i < 4; i++)
w[i] = (key[4*i],key[4*i+1], key[4*i+2], key[4*i+3]);
for (i = 4;i < 44; i++)
{
temp = w[i - 1];
if (i mod 4 = 0) temp = SubWord(RotWord(temp)) + Rcon[i/4];
w[i] = w[i-4] + temp;
}
}
输入密钥直接被复制到扩展密钥数组的前四个字节。然后每次用四个字节填充扩展密钥数组余下的部分。在扩展密钥数组中,每一个新增的字w[i]的值依赖于w[i-1]和w[i-4]。
四、等价的解密算法
- 交换逆向行移位和逆向字节代替
- 逆向移行[逆向字节代替(Si)] = 逆向字节代替[逆向移行 (Si)]
- 交换轮密钥加和逆向列混淆
- 逆向列混淆(Si⊕wj) = [逆向列混淆(Si)] ⊕[逆向列混淆(wj)]
五、参考文献
- William Stallings著;王张宜等译. 密码编码学与网络安全——原理与实践(第五版)[M]. 北京:电子工业出版社,2012.1.
- 密码算法详解——AES
- AES加密算法动画演示
热门推荐
电脑族必看:专家推荐的护眼三部曲
守正创新,打造行业特色文化品牌——中天国富证券文化建设新实践
中山大学发布干眼症新疗法:每天笑4次,效果媲美人工泪液
芳华绽放十三载,银发力量耀华章,江苏各地秣马厉兵海选一年备战老年春晚
路桥区的十里长街:一条承载台州记忆的老街
路桥十里长街:千年古街展新颜
冬季滋补正当时:教你做出零膻味羊肉火锅
低脂高蛋白,这样吃羊肉火锅也能减肥
故宫蛇文物展+八达岭夜长城:春节北京两日游攻略
春节北京必打卡:天安门升旗与故宫博物院游玩全攻略
地道北京年:小李带你体验最纯正的京味春节
春节游北京:故宫看玉展,八达岭赏夜景,颐和园观梅
克服感情执念:从接受现实到学会原谅的7步法
望仙谷:江西上饶的四季仙境,春赏花夏避暑秋观叶冬戏雪
电饭煲内胆材质选择:不粘锅与不锈钢的优劣对比
不粘锅涂层刮花怎么办?安全使用全攻略
上饶至云南五日游:全程高速自驾,六城温泉美食深度体验
江西望仙谷:废弃矿山改造景区的夜游与住宿攻略
江西上饶望仙谷:废弃矿区蝶变4A景区,半年揽客153万
诗意晚安心语,伴你入梦
晚安文案,让情感升温的魔法
社交媒体使用时长居高不下,21天计划助你重获数字自由
揭秘古代宫廷中的神秘玉磬演奏
玉磬:中国古代音乐的瑰宝
当心!这些行为可能是职场霸凌,8个应对策略助你维权
从心理伤害到人才流失:职场霸凌的多维度影响与应对
职场霸凌致185人认定工伤,专家:需建立多方防治机制
职场PUA如何防?七种实用应对策略
新方案剑指职场霸凌:立法、培训、支持体系全覆盖
三星电视黑屏怎么办?9种实用解决方案全攻略