0

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

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

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

那是对的吗 ?

4

1 回答 1

0

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

如果传递给函数,这将保存一个布尔值,该值确定所使用的算法是否“加密强”,例如,可以安全地与 GPG、密码等一起使用。如果是,则为TRUE,否则为FALSE

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

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

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

于 2015-02-24T15:08:37.927 回答