如何使用openssl_random_pseudo_bytes函数?php


How to use openssl_random_pseudo_bytes function ? php

我想生成令牌,将其用作登录身份验证,所以我想确保令牌算法在加密方面是强大的!

我正在使用这段代码来实现这一点:

$crypto_strong = false;
while($crypto_strong !== false)
$openssl =openssl_random_pseudo_bytes(128,$crypto_strong);
$token = bin2hex($openssl);

这是正确的吗?

阅读文档,它将$crypto_strong参数描述为:

如果传递到函数中,它将保存一个布尔值,该值确定所使用的算法是否"加密性强",例如,与GPG、密码等一起使用是否安全。TRUE如果是,否则FALSE

对于特定系统,$crypto_strong的值将是固定的。因此,如果你的系统不使用强大的算法,你的代码将进入一个无限循环。

根据这些相同的文档,"这很少是错误的,但有些系统可能已经损坏或旧了"。所以听起来你不太可能遇到错误值的例子。也许在这些情况下,中止程序并向用户显示错误会更合适。

我不完全清楚你的背景用例,所以我不知道这种通用方法是否适合你。但你发布的代码肯定是错误的。