1

我有 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 中的任何函数可以使我的字符串成为固定大小的键。

4

1 回答 1

3

不要使用字符串作为加密密钥,使用密码派生函数(例如 PBKDF2),其轮数计算使得该函数需要约 100 毫秒。这将产生用作键的字节输出。

对于 IV,使用加密伪随机数生成器并在加密数据前加上 IV,无需对 IV 保密。

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

于 2016-11-21T01:51:08.497 回答