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 的唯一字符串。
虽然我想象每个 PHP 密码学扩展都会提供自己的函数版本来生成随机数据,就像他们目前所做的那样:
- ext/openssl提供openssl_random_pseudo_bytes()(但
random_bytes()
比它好)
- libsodium-php provides \Sodium\randombytes_buf()
这仅仅是因为如果不访问 CSPRNG,任何密码学 API 都是不完整的。事实上,mcrypt_create_iv()
是由 PHP 开发人员出于同样的原因添加的,而它不是 libmcrypt 的一部分。
I only use it for safe/retrievel of a unique string.
"Random" 并不意味着 "unique"。前者需要不可预测,而后者必须不可重复.
确实,随着您添加到字符串中的每个随机字节,发生冲突的几率呈指数级下降,但永远无法 100% 保证唯一性。
我一直在关注有关使用 mcrypt_create_iv()
生成随机字符串的信息,并且在 3v4l.org 上有一些示例代码。
阅读 PHPWiki 后,所有 mycrypt_*
函数将 显示 已弃用的警告,但它没有指定将在 7.2/8.0 中使用什么来替换这些功能。
既然它声明它将在 7.2/8.0 中被删除,那么将使用什么来替换 IV?
我没有在我的软件中使用此功能进行加密和解密。我只将它用于 safe/retrievel 的唯一字符串。
虽然我想象每个 PHP 密码学扩展都会提供自己的函数版本来生成随机数据,就像他们目前所做的那样:
- ext/openssl提供openssl_random_pseudo_bytes()(但
random_bytes()
比它好) - libsodium-php provides \Sodium\randombytes_buf()
这仅仅是因为如果不访问 CSPRNG,任何密码学 API 都是不完整的。事实上,mcrypt_create_iv()
是由 PHP 开发人员出于同样的原因添加的,而它不是 libmcrypt 的一部分。
I only use it for safe/retrievel of a unique string.
"Random" 并不意味着 "unique"。前者需要不可预测,而后者必须不可重复.
确实,随着您添加到字符串中的每个随机字节,发生冲突的几率呈指数级下降,但永远无法 100% 保证唯一性。