openssl_random_pseudo_bytes 的替代方案 - 生成安全的唯一令牌

Alternative for openssl_random_pseudo_bytes - generate secured unique tokens

我的服务器主机有 php 版本 5.2.17。我正在使用随机标记并在我的函数中使用 openssl_random_pseudo_bytes 。

openssl_random_pseudo_bytes( $length);

正在尝试 运行 来自 Scott's answer 的代码。

它 运行 在我的本地主机上 php 版本更高。 除了升级我的服务器 php 版本。 openssl_random_pseudo_bytes 的替代函数是什么?

更新: 使用 mt_rand, rand or uniqid,如何生成安全的唯一令牌? 截至目前,我正在使用这行代码:

$token = md5(uniqid(rand(), true));

$thetoken = $token.$user_id;

感谢您的帮助!

我正在使用 5.6,但也一直在寻找创建安全和唯一令牌的方法,因为我无法使 openssl_random_pseudo_bytes 功能正常工作。我在 github 的 paragonie random_compat 上有 运行,这应该允许你使用 random_bytes() 和 random_int()(两者都只适用于 PHP7).他们确实说理论上它应该能够与 PHP 的旧 5.x 版本一起使用,尽管他们确实建议更新到 php 的当前稳定版本。 https://github.com/paragonie/random_compat

这是另一个堆栈溢出答案的 link,建议使用 random_bytes() as $token = bin2hex(random_bytes($length));

best practice to generate random token for forgot password

还有 link 我发现暗示 paragonie 的 random_compat https://akrabat.com/random_bytes-in-php-5-6-and-5-5/ https://paragonie.com/blog/2015/07/how-safely-generate-random-strings-and-integers-in-php

openssl_random_pseudo_bytes(10) 的替代方法是这样的 decbin(rand(0,1024)) in php 5.X