Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用openssl_random_pseudo_bytes函数?php_Php_Cryptography_Token_Php Openssl - Fatal编程技术网

如何使用openssl_random_pseudo_bytes函数?php

如何使用openssl_random_pseudo_bytes函数?php,php,cryptography,token,php-openssl,Php,Cryptography,Token,Php Openssl,我想生成令牌,将其用作登录身份验证,因此我想确保令牌算法在加密方面是强大的 我使用这段代码来实现: $crypto_strong = false; while($crypto_strong !== false) $openssl =openssl_random_pseudo_bytes(128,$crypto_strong); $token = bin2hex($openssl); 正确吗?阅读,它将$crypto\u strong参数描述为: 如果传递到函数中,它将保存一个布尔值,该值确定所

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

我使用这段代码来实现:

$crypto_strong = false;
while($crypto_strong !== false)
$openssl =openssl_random_pseudo_bytes(128,$crypto_strong);
$token = bin2hex($openssl);
正确吗?

阅读,它将$crypto\u strong参数描述为:

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

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

根据这些文件,这是很少是假的,但有些系统可能已经损坏或陈旧。因此,听起来您不太可能遇到错误值的例子。也许在这些情况下,中止过程并向用户显示错误更合适


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

你的代码完全被破坏了。您的循环将永远不会运行,$openssl将永远不会被设置。您至少应该检查$crypto_strong!==符合事实的