首页 > 编程知识 正文

aes加密算法详解,非对称加密算法

时间:2023-05-06 03:05:09 阅读:29292 作者:542

总体特征分组密码

明文和密文的长度明文和密文的长度为128位,密钥的长度是可变的。 当前选择的是128比特,诸如(128/192/256 ) 128/192/256。面向二进制的密码算法

可以对任何形式的计算机数据进行加密解密。不是对合运算

解密时使用不同的算法。综合运用多种密码技术

替换,替代,代数整体结构

sp结构、基本循环函数迭代、迭代循环数可变() 10 ) )。

迭代次数Rijndael加密算法明文分组长度可变,密钥长度也可变。 明文数据包长度和密钥长度相互独立地为128、192、256bits、因而Rijndael算法有 9种不同的版本,而迭代次数与明文分组长度和密钥长度有关。

NIST选择Rijndael算法作为AES算法,明文组为128bits,而密钥长度可为128、192、256bits,因而实际上AES有三个版本:AES-128、AES-192、AES-256,相应的迭代轮数为10轮、12轮、14轮。

算法流程图(以128位明文和密钥为例,共10次) ) ) ) ) )。

首先,在Nk (密钥串数)、Nb (明文串数) http://www.Sina.com/Rijndael算法的情况下,明文串数是数据包长度除以32,通常标记为Nb。 Nb=分组长度(bits )/32 ) bits Rijndael算法的列数Nb可取4、6、8的值,其中对应的明文分组长度为128、192、256 bits。 另一方面,由于AES算法的分组长度固定为128 bits,因此AES明文串数为固定值状态用以字节(8bits)为基本构成元素,每列4bytes数据,即为32bits。

根据Nb=4(此处明文为分组长度为128所以Nb=4),密钥串数标记为Nk。 Nk=密钥长度(bits )/32 ) bits )AES算法加密和解密过程中密钥同样以字节为单位进行计算,密钥状态矩阵也是4行,每列4bytes数据,即为32bits。

整体加密为两部分明文加密和密钥生成明文加密AES算法的密钥长度的列数为128bits、192bits、256bits三种不同长度,因此不同密钥长度Nk可以取值分别为4、6、8。(此处nk也等于4)

AES算法中的初始状态矩阵一组长度依次从1.明文初始状态矩阵(state)(注意是怎么排的,行数永远四行,因为它要保证一列是4字节)类推,AES算法的明文分组可以构成44的初始字节状态矩阵

输出密文128bits也以列方式以相同顺序从状态矩阵中的类似明文中提取

128bits明文分组构成,以字节为单位,则总共有16bytes,从左到右开始,则前4个字节组成明文状态矩阵第1列,依次后四个字节组成第2列,

AES算法的密钥长度列数为128192256bits三种不同长度,2.密钥初始矩阵(与明文相同,注意Nk取值,后面要用)例如密钥长度为192bits,以字节为单位,共计24bytes

因此不同密钥长度Nk(密钥列数)以取值分别为4、6、8。 初始密钥的列数编排类似明文初始状态矩阵,因而密钥构成一个44、46、48的密钥字节矩阵。

明文矩阵与初始密钥矩阵的异或运算

3.轮密钥加(第一次)

“字节变换”(SubBytes )使用16乘16矩阵的s框,如表所示。 其非线性置换为4.字节代替(SubBytes)

输入的列的每个元素用来指定S盒的地址:前4位指定S盒的行,后4位指定S盒的列。行和列所确定S盒位置的元素取代输入矩阵中相应位置的元素。

状态数组的四个行循环以字节为基本单位向左移动,但每个行循环的移动量由明文组的大小和所在的行数决定。 即5.行移位(ShiftRows)

列数Nb和行号确定。第一行不动,第二行循环左移一位,后面一次增加一位

6.列混合(MixColumns)

补充知识(字节转换为多项式,后面运算用)

不可约多项式

通过将平移得到的结果和固定矩阵进行矩阵乘法运算得到结果,计算中涉及的基本运算遵循gf(8)域上的运算。固定矩阵

加变为异或

3358www.Sina.com/继续进行循环密钥加法运算,直到最后一个循环开始,在循环密钥加法运算后输出密文(乘法则)

最后一轮不进行列混合。

注意以10轮为例,轮密钥加其实执行了11次,进来时多执行了一次

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。