【问题标题】:mcrypt_generic_init: Meaning of the iv parametermcrypt_generic_init:iv参数的含义
【发布时间】:2011-08-17 04:26:32
【问题描述】:

我正在使用 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'会更好吗?

【问题讨论】:

    标签: php encryption mcrypt blowfish


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 2014-08-11
      • 1970-01-01
      相关资源
      最近更新 更多