【发布时间】:2015-07-27 09:33:22
【问题描述】:
我需要使用加密机制。我选择了 mcrypt,因为它是可用的以及它的示例。但是我看到生成时间太多了。当我在给定的示例中使用 IV 时,它花费了很多时间,而当我删除它时,它会立即生成加密值。
// Code example using IV
$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($ivSize, MCRYPT_DEV_RANDOM);
$encryptedString = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $encryptionKey, utf8_encode($origString), MCRYPT_MODE_ECB, $iv);
return base64_encode($encryptedString);
// Code example without IV
$encryptedString = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $encryptionKey, utf8_encode($origString), MCRYPT_MODE_ECB);
return base64_encode($encryptedString);
那么如果不使用 IV 的加密有什么大的安全问题呢?
【问题讨论】:
-
你为什么专门使用
MCRYPT_DEV_RANDOM。试试MCRYPT_DEV_URANDOM看看是否更直接。除此之外,您应该等待密码学专家,但就我有限的知识而言,您当然需要 IV。 -
@deceze 您的解决方案是对的,
MCRYPT_DEV_URANDOM的性能非常好。但我会更多地查看描述性答案。
标签: php performance mcrypt initialization-vector