如何填充短字符串以用作AES密钥?

时间:2016-11-21 01:29:12

标签: c openssl aes pbkdf2 kdf

我有5个不同的字符串,我想用作键。他们是:

asuspcgame, dragonZ, whiterice, ball, document

我想使用EVP OpenSSL执行加密:https://www.openssl.org/docs/man1.0.2/crypto/EVP_EncryptInit.html

但是,我意识到该示例使用的是固定大小的密钥(AES_128为16个字符)。

unsigned char key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
EVP_EncryptInit_ex(&ctx, EVP_idea_cbc(), NULL, key, iv);

我的问题是:如何让我的字符串始终具有固定大小的16个字符?

我没有看到EVP中的任何功能可以使我的字符串成为固定大小的键。

1 个答案:

答案 0 :(得分:2)

不要使用字符串作为加密密钥,使用密码派生函数(如PBKDF2)和舍入计数使得函数需要约100ms。这将产生am输出的字节用作键。

对于IV使用加密伪随机数生成器并使用IV为加密数据添加前缀,不需要保密IV。

或者更好的是,使用RNCryptor;它为您完成所有这些并添加了加密认证,版本控制并且是跨平台的。