aes-128-cbc 和 aes-128 加密有什么区别吗?

Is there any difference between aes-128-cbc and aes-128 encryption?

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

参考 link : this is where I have to send encryption method

3 件事:

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

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

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

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

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

欧洲央行:

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

如果您使用 CBC,第一个块与 IV(初始化向量)进行异或并使用密钥加密,第二个块与第一个块进行异或,然后使用密钥加密,第三个与第二个。由此产生的密码不易受到频率分析的影响。

This image is taken from Wikimedia Commons, the free media repository

缺点是你不能并行化 encryption/decryption 因为你需要前一个块的结果,所以它可能会更慢。但在实践中,它并没有真正的区别。

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

但是,这仅在 OPEN SSL 格式中被引用和使用。在 Open SSL 之前,PHP 使用了未正确设计的 mcrypt_encrypt(旧版本的 PHP)。 在使用 mcrypt.

时,aes-128 也可以被称为 rijndael