首页 > 编程知识 正文

在线aes加密工具,aes加密算法安全吗

时间:2023-05-06 10:49:42 阅读:111362 作者:4859

以前做的笔记找不到哪个大人物共享了散列汇总算法: MD5,SHA,不可逆

对称加密算法: AES、可逆(替代DES )

1 .密钥是AES算法实现加密和解密的根本。 对称加密算法是对称的,因为加密和解密明文需要同一个密钥

AES支持三个长度的密钥。

128位,192位,256位

平时被称为AES128、AES192、AES256的实际上是指对不同长度的密钥使用AES算法。

2 .要了解填料填充的概念,首先要了解AES的分组加密特性。

什么是组加密? 请看下图:

AES算法在加密明文时,不是用一个脑加密整个明文,而是将明文分割成一个个独立的明文块,每个明文块的长度为128bit。

这些明文块经过AES加密器的复杂处理,产生一个个独立的密文块,这些密文块被拼接在一起,是最终AES加密的结果。

但是这里有个问题:

如果某个明文的长度为192比特,则每128比特分割为一个明文块的话,第二个明文块只有64比特,小于128比特。 这个时候怎么办? 需要对明文模块进行http://www.Sina.com/(padding )。

填充

不输入任何内容,但明文必须是16字节的整数倍。

NoPadding:

如果明文块少于16字节(128bit ),则在明文块的末尾补充适当数量的字符,每个字节的值等于缺少的字符数。

例如,如果缺少{ 1,2,3,4,5,a,b,c,d,e},6个字节,则补充为{ 1,2,3,4,5,a,b,c,d,e,6,6,6 }

如果明文块小于16字节(128bit ),则在明文块的末尾补充适当数量的字节,最后的文字值等于不足文字数,其他文字填充随机数。

例如,如果缺少{ 1,2,3,4,5,a,b,c,d,c,d,d,e,e},6个字节,则{ 1,2,3,4,5 }

3 .模式AES的操作模式出现在明文块加密为明文块的处理过程中。 AES加密算法有五种不同的工作模式:

PKCS5Padding(默认)

模式之间的主题思想相近,在处理细节上存在一些差异。 这次只介绍各模式的基本定义。

ISO10126Padding:

此模式下的electroniccodebookbook 3358 www.Sina.com /

密码链接模式cipherblockchaining http://www.Sina.com /

计算器模式Counter ECB、CBC、CTR、CFB、OFB

密码反馈模式cipher feedback http://www.Sina.com /

输出反馈模式Output FeedBack具体分为几次? 初始回合(Initial Round ) 1次

普通轮(Rounds ) n次

最后一轮(Final Round ) 1次

AES的密钥支持三种长度: AES128、AES192和AES256。 Key的长度决定了AES加密的回合数。

除初始控制盘外,与每个Key长度对应的控制盘的数量如下:

AES128:10轮AES192:12轮AES256:14轮不同阶段的Round有不同的处理程序。

初始回合只有一个步骤:

“循环关键帧”(AddRoundKey )常规循环包括四个步骤:

字节替换(SubBytes )行移位(ShiftRows )列混淆)循环密钥(AddRoundKey )最终循环包括三个步骤。

字节替换(SubBytes )行移位(ShiftRows )循环键) AddRoundKey )1.字节替换(SubBytes ) )。

再有,16字节明文块按各处理步骤排列成44的2维排列。

字节替换是指将明文块中的每个字节替换为另一个字节。 替代的根据是什么呢?

基于16X16大小的二维常量数组,称为3http://www.Sina.com/(subtitutionbox )。

如果明文块中a [ 2,2 ]=5b (1字节为2位的十六进制),则输出值b [ 2,2 ]=s [5] [ 11 ]。

2 .行移位(ShiftRows ) ) ) ) ) ) ) )。

这一步很简单。 如图所述:

第一行保持不变,第二行左移一个字节,第三行左移两个字节,第四行左移三个字节,3 .列混淆) )。

在此步骤中,将输入数组中的每一列乘以名为“面片矩阵”(fixed matrix )的二维常量数组以获得相应的输出列。

4 .回合键(Add

RoundKey)


这一步是唯一利用到密钥的一步,128bit的密钥也同样被排列成4X4的矩阵。
让输入数组的每一个字节a[i,j]与密钥对应位置的字节k[i,j]异或一次,就生成了输出值b[i,j]。
需要补充一点,加密的每一轮所用到的密钥并不是相同的。这里涉及到一个概念:扩展密钥(KeyExpansions)。

扩展密钥(KeyExpansions)

AES源代码中用长度 4 * 4 *(10+1) 字节的数组W来存储所有轮的密钥。W{0-15}的值等同于原始密钥的值,用于为初始轮做处理。
后续每一个元素W[i]都是由W[i-4]和W[i-1]计算而来,直到数组W的所有元素都赋值完成。
W数组当中,W{0-15}用于初始轮的处理,W{16-31}用于第1轮的处理,W{32-47}用于第2轮的处理 …一直到W{160-175}用于最终轮(第10轮)的处理。

模式解析(KeyExpansions) 1.ECB模式

ECB模式(Electronic Codebook Book)是最简单的工作模式,在该模式下,每一个明文块的加密都是完全独立,互不干涉的。

这样的好处是什么呢?

简单有利于并行计算

缺点同样也很明显:

相同的明文块经过加密会变成相同的密文块,因此安全性较差。 2.CBC模式

CBC模式(Cipher Block Chaining)引入了一个新的概念:初始向量IV(Initialization Vector)。
IV是做什么用的呢?它的作用和MD5的“加盐”有些类似,目的是防止同样的明文块始终加密成同样的密文块。

从图中可以看出,CBC模式在每一个明文块加密前会让明文块和一个值先做异或操作。IV作为初始化变量,参与第一个明文块的异或,后续的每一个明文块和它前一个明文块所加密出的密文块相异或。
这样以来,相同的明文块加密出的密文块显然是不一样的。

CBC模式的好处是什么呢?

安全性更高

坏处也很明显:

无法并行计算,性能上不如ECB引入初始化向量IV,增加复杂度。

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