我一直在关注关于使用mcrypt_create_iv()生成随机字符串的信息,并在3v4l.org处有一些示例代码.
读取PHPWiki后,所有mycrypt_ *函数将显示过时的警告,但未指定在7.2 / 8.0中将使用哪些功能替代这些功能.
由于它声明它将在7.2 / 8.0中删除,因此将用什么来代替IV?
我没有在软件中使用此功能进行加密和解密.我仅将其用于安全/检索唯一字符串.
解决方法:
尽管我想象每个PHP密码学扩展都将提供其自己的函数版本来生成随机数据,就像它们当前所做的那样:
> ext / openssl提供openssl_random_pseudo_bytes()(但是random_bytes()比它更好)
> libsodium-php提供了\Sodium\randombytes_buf()
那是因为没有访问CSPRNG,任何加密API都是不完整的.实际上,出于同样的原因,PHP开发人员添加了mcrypt_create_iv(),但它不是libmcrypt的一部分.
I only use it for safe/retrievel of a unique string.
“随机”并不意味着“独特”.前者必须不可预测,而后者则必须不可重复.
的确,添加到字符串中的每个随机字节都会使冲突的机会呈指数下降,但是绝对不能保证100%唯一.