mcrypt_generic_init:iv参数的含义

时间:2011-05-02 18:33:59

标签: php encryption mcrypt blowfish

我正在使用php mcrypt库检查一部分代码,使用Blowfish密码加密一些二进制数据。基本上它会在MCRYPT_MODE_CBC模式下创建一个河豚描述符,然后调用mcrypt_generic_init函数,iv参数始终等于'12345678'。

简化代码提取:

$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
mcrypt_generic_init($cipher, $key, '12345678');

mcrypt-generic-init功能的文档说明如下:

  

IV通常应具有算法块大小的大小,但您必须通过调用mcrypt_enc_get_iv_size()来获取大小。欧洲央行忽略了IV。 IV必须存在于CFB,CBC,STREAM,nOFB和OFB模式中。 它必须是随机且唯一的(但不是秘密)。必须使用相同的IV进行加密/解密。 如果您不想使用它,则应将其设置为零,但不建议这样做。

我的问题是:

这个参数用于什么?使用iv参数的这个值是一个弱点吗?我不确定,因为据说它不必是秘密,所以攻击者可以以某种方式获得它。如果它不是一个弱点,并且这个参数的值非常好,那么为什么不建议将它设置为零?硬编码一些伪随机字符串而不是'12345678'会更好吗?

1 个答案:

答案 0 :(得分:0)