AES模式和填充

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AES模式和填充相关的知识,希望对你有一定的参考价值。

参考技术A

AES是分组加密,也就是说它是对固定大小的分组数据进行处理。AES每次处理的128位(16字节)的输入。不过,大多数要加密的的数据都不是16字节长。为了解决这个问题,需要选择合适的模式。

模式是用来将数据分组串起来从而使得任意数据都能加密的算法。模式适用于任何分组的加密算法,包括AES。

最简单的模式是电子密码本(ECB)。但千万不要在iOS应用中使用该模式。

最常见的分组加密模式是密码分组链模式(CBC)。

填充的作用是在加密前将普通文本的长度扩展到需要的长度。关键在于填充的数据能够在解密后正确的移除。

CBC是最常用的加密模式,因此最方便跟其他系统交换数据。 这也是苹果安全团队推荐的模式。

在链模式如CBC中,每个分组都会影响到下一个分组的加密。这就是为了保证两个相同的普通文本分组不会生成相同的密文分组。

第一个分组是个特列,因为它前面再没有其他的分组了。链模式允许定义一个额外的称为初始化向量(Initialization Vector, IV)的分组来开始这个链。这个通常会被标成可选的。但你总是需要提供一个。否则,它会用一个全是0的分组,那样会让你的数据容易受到特定的攻击的侵害。

AES提供了三种密钥长度:128位,192位和256位。
推荐使用AES-128位

在内部实现上,AES只是提供一个接收固定长度密钥和16字节大小的分组,然后生成另外一个不同的16字节大小的分组的数学函数。

AES加密算法原理

参考技术A 一般的加密通常都是块加密,如果要加密超过块大小的数据,就需要涉及填充和链加密模式,本文对对称加密和分组加密中的几种种模式进行一一分析(ECB、CBC、CFB、OFB,CTR)

这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密。

优点:

这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。

优点:

计算器模式不常见,在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是 在计算器不能维持很长的情况下,密钥只能使用一次 。CTR的示意图如下所示:

优点:

优点:

优点:

以上是关于AES模式和填充的主要内容,如果未能解决你的问题,请参考以下文章

AES加密,CBC模式,0填充

使用 AES-256 和 PKCS7 填充加密

具有 PKCS7 填充编码数据的 AES 256 具有一半 ECB 和一半 CBC 块

AES共有ECB,CBC,CFB,OFB,CTR五种模式分别有啥区别

AES共有ECB,CBC,CFB,OFB,CTR五种模式分别有啥区别

AES加密 — 详解