我想通过 mcrypt 命令行工具使用 AES (rijndael 128) 加密文件。我想将初始化向量设置为特定值。我怎样才能做到这一点?
顺便说一句,我对加密很陌生。
谢谢!
显然,没有办法使用命令行工具指定 IV,除非使用将--noiv
IV 设置为一堆零的标志。来自 mcrypt 的源代码,文件 src/classic.c,第 142 行:
IV = _secure_mcrypt_malloc(mcrypt_enc_get_iv_size(td));
if (noiv==FALSE)
mcrypt_randomize( IV, mcrypt_enc_get_iv_size(td), real_random_flag);
else
memset( IV, 0, mcrypt_enc_get_iv_size(td));
所以代码清楚地表明你要么得到一个随机的 IV 要么得到零。
不过,您可以修补 mcrypt。提供源代码,这是免费软件。我上面显示的代码片段正是您要修补的地方。