没有合适的资源?快使用搜索试试~ 我知道了~
首页AES加密解密算法详细分析
AES加密解密算法详细分析

用于学习研究的参考资料,其中主要描述AES的算法原理,数学原理和实现的流程。
资源详情
资源评论
资源推荐

高级加密标准(AES)

目 录
2.定义......................................................................................................4
2.1 术语和缩写词表...............................................................................................4
2.2 算法参数、符号和函数...................................................................................5
3.符号和惯例..........................................................................................6
3.1 输入和输出.......................................................................................................6
3.2 字节(Bytes).......................................................................................................6
3.3 字节数组...........................................................................................................7
3.4 状态(State)........................................................................................................8
3.5 将状态看作列数组...........................................................................................8
4.数学基础..............................................................................................9
4.1 加法...................................................................................................................9
4.2 乘法...................................................................................................................9
4.2.1 乘 x...........................................................................................................................10
4.3 系数在 GF(2
8
)中的多项式.............................................................................10
5.算法说明............................................................................................12
5.1 加密.................................................................................................................13
5.1.1 字节替代(SubBytes( ))变换....................................................................................14
5.1.2 行移位(ShiftRows( ))变换......................................................................................15
5.1.3 列混合(MixColumns( ))变换..................................................................................16
5.1.4 轮密钥加(AddRoundKey( ))变换...........................................................................17
5.2 密钥扩展算法.................................................................................................17
5.3 解密.................................................................................................................19
5.3.1 逆行移位(InvShiftRows( ))变换.............................................................................19
5.3.2 逆字节替代(InvSubBytes( ))变换..........................................................................20
5.3.3 逆列混合(InvMixColumns( ))变换.........................................................................21
5.3.4 轮密钥加(InvMixColumns( ))变换的逆变换........................................................21
5.3.5 等价的解密变换......................................................................................................21
6.实现方面的问题................................................................................23
6.1 密钥长度要求.................................................................................................23
6.2 密钥限制.........................................................................................................24
6.3 密钥长度,分组大小和轮数的参数化.........................................................24
6.4 针对不同平台的实现建议.............................................................................24

图表目录
图 1 16 进制......................................................................................................................................7
图 2 字节和比特编号....................................................................................................................8
图 3 状态矩阵、输入和输出......................................................................................................8
图 4 Key-Block-Round 组合..........................................................................................................12
图 5 加密算法伪代码..................................................................................................................13
图 6 SubBytes()作用在状态的单个字节上.......................................................................14
图 7 S 盒:字节 xy 的替代值(16 进制格式)....................................................................15
图 8 ShiftRows()在状态的后三行上循环移位.................................................................16
图 9 MixColumns()在状态的列上运算...............................................................................17
图 10 AddRoundKey() 将密钥编排得到的字异或到状态的每一列上.....................17
图 11 密钥扩展伪代码................................................................................................................18
图 12 解密算法的伪代码...........................................................................................................19
图 13 InvShiftRows()在状态的后三行上循环移位.........................................................20
图 14 S 盒的逆:字节 xy 的替代值(16 进制格式).........................................................20
图 15 等价解密算法的伪代码..................................................................................................23
1.引言
该标准详细说明了 Rijndael 算法([3]和[4]),一个对称分组密码算法。可以处理 128
bits 数据分组,使用的密钥长为 128,192 和 256 bits。Rijndael 的设计还可以允许处理其它
的分组长度和密钥长度,然而该标准中没有采用。
在本标准的其余部分,本文说明的算法均被称为“AES 算法”。如上所述,该算法可以
使用 3 种不同的密钥长度,分别称为“AES-128”、“ AES-192”、“ AES-256”。
该说明包括下列部分:
2.术语定义,缩写词,算法参数、符号和函数;
3.算法说明中使用的符号和惯例,包括 bits,bytes,words 的排序和编号方式;
4.对理解算法有帮助的数学工具;
5.算法说明,包括密钥扩展、加密和解密程序;
6.实现方面,如密钥长度支持、密钥限制和其它的分组/密钥/轮大小。
该标准以几个附录做为结尾,包括密钥扩展和加密的每一步的示例、加密和解密的
示例向量以及参考文献列表(本翻译略去,详见 Fips-197 文档)。

2.定义
2.1 术语和缩写词表
下面是文中经常出现的术语:
AES 高级加密标准
Affine Transformation 仿射变换,由一个线性变换和一个向量加变换复合而成
Array 包含一定个数的相同实体的集合(如字节数组)。
Bit 一个二进制数(比特),0 或 1。
Block 一个比特序列,如输入、输出、状态和轮密钥。该序列的
长度即是其包含的比特个数。分组也可以解释为字节数组。
Byte 字节,一个 8 比特序列。
Cipher 使用密钥将明文变换为密文的一系列变换。
Cipher Key 密码所使用的秘密密钥,在密钥扩展程序中用来生成一系
列轮密钥;这些轮密钥可以表示成以字节为元素的矩阵形
式,包含 4 行 Nk 列。
Ciphertext 加密算法得到的输出或解密算法的输入。
Inverse Cipher 使用密钥将密文变换为明文的一系列变换。
Key Expansion 密钥扩展算法:将秘密密钥扩展为一系列轮子密钥。
Plaintext 输入到加密算法的数据或从解密算法得到的输出。
Rijndael 该高级加密标准(AES)中描述的密码算法的名字。
Round Key 秘密密钥经过密钥扩展算法得到的一系列子密钥;它们将
被应用到加密和解密中的状态上。
State 加密算法的中间结果,可以表示为字节的矩阵数组,有 4

行 Nb 列。
S-box 一个非线性替代表: 在字节替代变换和密钥扩展程序中用
于执行字节替变换。
Word 一个 32 比特的比特串,也可以看作包含 4 个字节的数组。
2.2 算法参数、符号和函数
下列算法参数、符号和函数将贯穿于该标准始终:
AddRoundKey() 加密和解密中使用的变换,将一个轮密钥异或到状态上。
轮密钥的长度等于状态的大小(即对于 Nb=4,轮密钥长度
等于 128bits/16bytes)。
InvMixColumns() 解密中使用的变换,MixColumns()的逆变换。
InvShiftRows() 解密中使用的变换,ShiftRows()的逆变换。
InvSubBytes() 解密中使用的变换,SubBytes()的逆变换。
K 密码所使用的秘密密钥
MixColumns() 加密中使用的变换,以状态的每一列作为输入,混合每一
列的数据(彼此独立的)得到新的列。
Nb 状态包含的列(32-bit 字)的个数。对于 AES,Nb=4 (参见
6.3.)
Nk 密钥包含的 32-bit 字的个数。对于该标准,Nk=4,6 或 8。
(参见 6.3.)
Nr 轮数,是 Nk 和 Nb(固定的)的函数。对于该标准,Nr=
10,12 或 14。(参见 6.3.)
Rcon[] 密钥扩展算法中用到的轮常数。
RotWord() 密钥扩展算法中使用的函数,对 4-byte 字进行循环移位。
ShiftRows() 加密中使用的变换,将状态的最后 3 行循环移动不同的位
移量。
SubBytes() 加密中使用的变换,利用一个非线性字节替代表(S 盒),独
剩余23页未读,继续阅读


















zhange86
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- Xilinx SRIO详解.pptx
- Informatica PowerCenter 10.2 for Centos7.6安装配置说明.pdf
- 现代无线系统射频电路实用设计卷II 英文版.pdf
- 电子产品可靠性设计 自己讲课用的PPT,包括设计方案的可靠性选择,元器件的选择与使用,降额设计,热设计,余度设计,参数优化设计 和 失效分析等
- MPC5744P-DEV-KIT-REVE-QSG.pdf
- 通信原理课程设计报告(ASK FSK PSK Matlab仿真--数字调制技术的仿真实现及性能研究)
- ORIGIN7.0使用说明
- 在VMware Player 3.1.3下安装Redhat Linux详尽步骤
- python学生信息管理系统实现代码
- 西门子MES手册 13 OpcenterEXCR_PortalStudio1_81RB1.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论2