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

问题描述

我需要使用AES-256进行加密,但我还需要大于32字节的密钥大小。我有一个接受文本,密钥和IV并返回加密文本的函数。它适用于所有小于32个字节的内容,但是任何较大的内容都会给我一个错误

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

解决方法

使用AES-256时,密钥大小始终为32个字节(256/8 = 32)。

当输入密码不完全是32个字节和/或质量很差时,将使用key derivation function。使用具有足够熵的密钥,一个简单的哈希函数(例如SHA-256)就足够了。

换句话说,只需通过SHA-256输入您的输入密钥,就会产生一个可用于AES-256的32字节密钥。