mcrypt 7.1 弃用/7.2+ 删除

mcrypt 7.1 deprecated / 7.2+ removal

我一直在关注有关使用 mcrypt_create_iv() 生成随机字符串的信息,并且在 3v4l.org 上有一些示例代码。

阅读 PHPWiki 后,所有 mycrypt_* 函数将 显示 已弃用的警告,但它没有指定将在 7.2/8.0 中使用什么来替换这些功能。

既然它声明它将在 7.2/8.0 中被删除,那么将使用什么来替换 IV?

我没有在我的软件中使用此功能进行加密和解密。我只将它用于 safe/retrievel 的唯一字符串。

random_bytes()

虽然我想象每个 PHP 密码学扩展都会提供自己的函数版本来生成随机数据,就像他们目前所做的那样:

这仅仅是因为如果不访问 CSPRNG,任何密码学 API 都是不完整的。事实上,mcrypt_create_iv() 是由 PHP 开发人员出于同样的原因添加的,而它不是 libmcrypt 的一部分。


I only use it for safe/retrievel of a unique string.

"Random" 并不意味着 "unique"。前者需要不可预测,而后者必须不可重复.
确实,随着您添加到字符串中的每个随机字节,发生冲突的几率呈指数级下降,但永远无法 100% 保证唯一性。