Botan/C++ - 使用大于 32 字节的密钥大小使用 AES 加密

Botan/C++ - Encrypting with AES using a key size larger than 32 bytes

我需要使用 AES-256 加密,但我还需要一个大于 32 字节的密钥。我有一个函数,它接受文本、一个密钥和一个 IV,以及 returns 加密文本。它适用于所有小于 32 字节的东西,但任何更大的东西都会给我一个错误。

所以从本质上讲,我如何才能实现使用大于 32 字节的密钥的方法?我已经尝试将密钥拆分为 32 字节(或更少)字符串的向量,然后将它们用作密钥,但我想不出一种方法来一次使用所有这些密钥统一加密文本,那我该怎么办?

对于 AES-256,密钥大小始终为 32 字节长 (256/8 = 32)。

当输入的秘密不完全是 32 字节 and/or 质量较差时,使用 key derivation function。有了足够熵的密钥,一个简单的散列函数(例如 SHA-256)就足够了。

换句话说,只要通过 SHA-256 提供您的输入密钥,就会得到一个可用于 AES-256 的 32 字节密钥。