20

我想知道这两种加密方法有什么区别吗?我以前从未使用过这些。我的客户要求我使用 AES-128 加密,但是当我用 Google 搜索时,它显示“aes-128-cbc”、“aes-128-ctr”、“aes-256-cbc”或“aes-256-ctr” " 所以我想知道我应该使用哪一个会像 AES-128?

参考链接:这是我必须发送加密方法的地方

4

4 回答 4

43

3件事:

  • AES:高级加密标准。这是加密算法的名称(对称加密)。其他对称加密算法有:DES、3-DES等。
  • 128:这可能是指密钥大小。AES 加密使用 3 种密钥大小(128 位、192 位和 256 位)。AES 中的块大小也是 128 位。
  • CBC:这是您想要的加密模式。有多种加密模式,这取决于您希望算法工作的速度、并行性和安全级别。一些模式是CBC(密码块链接),ECB(电子密码本),CFB(密码反馈),CTR(计数器)等。

现在,您的客户要求您使用 AES-128 进行加密。因此,您应该使用 128 位密钥大小的 AES 加密。您可以使用的任何模式都将是您的偏好。我更喜欢CBC。

于 2015-10-14T12:00:19.257 回答
22

只是关于 CBC 与 ECB 的快速说明。当您使用 ECB 加密时,每 128 位(取决于块大小)的数据都会使用相同的密钥进行加密。如果明文中有任何模式,那么无论加密算法有多好,生成的加密文本也将是可预测的。

欧洲央行:

Plain text: aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa
            ---------------- ---------------- ----------------
Encrypted:  bdefjakjapqeiowp bdefjakjapqeiowp bdefjakjapqeiowp

如果使用 CBC,则第一个块与 IV(初始化向量)进行异或并使用密钥加密,第二个块与第一个块进行异或,然后使用密钥加密,第三个使用第二个。这样得到的密码就不太容易受到频率分析的影响。 CBC加密模式

此图像取自免费媒体存储库 Wikimedia Commons

缺点是您无法并行化加密/解密,因为您需要前一个块的结果,因此它可能会更慢。但在实践中,它并没有真正的区别。

于 2015-10-14T13:59:15.593 回答
4

查看您包含的链接,它说它将接受多种不同的模式,包括 CBC。除非您有特定的理由不使用它,否则请使用 AES-128-CBC。CBC模式是一种很好的通用模式。您还需要了解填充(使用 PKCS#5 或 PKCS#7,无论您的系统允许使用哪个)和初始化向量 IV,以使 CBC 模式正常工作。

不要使用 ECB 模式,因为它不安全并且会泄露信息。

于 2015-10-14T13:45:34.953 回答
1

这里aes-128-cbcaes-128aes代表高级加密服务,128是比特率,CBC是加密方式。

但是,这仅在OPEN SSL格式中被引用和使用。在 Open SSL 之前,使用mcrypt_encrypt的 PHP 设计不正确(旧版本的 PHP)。 使用aes-128时也可以参考。rijndaelmcrypt

于 2017-02-24T07:12:11.760 回答