Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
Php 使用mcrypt获取密码salt。在本地apache服务器上执行时间很快,但在web主机上执行速度非常慢_Php_Security_Web Hosting_Salt_Mcrypt - Fatal编程技术网

Php 使用mcrypt获取密码salt。在本地apache服务器上执行时间很快,但在web主机上执行速度非常慢

Php 使用mcrypt获取密码salt。在本地apache服务器上执行时间很快,但在web主机上执行速度非常慢,php,security,web-hosting,salt,mcrypt,Php,Security,Web Hosting,Salt,Mcrypt,这是我当前创建密码的设置。我注意到,当我将注册页面上传到web主机时,页面执行大约需要1分钟,而在本地apache服务器上则是即时的。我把问题缩小到这行代码。您是否知道此函数存在任何执行时间问题,或者是否有更好的方法获取salt字符串(128长度)?问题在于MCRYPT\u DEV\u RANDOM参数,从该参数读取将阻塞服务器,直到有足够的entrophy可用。相反,您应该使用: $salt=bin2hex(mcrypt_create_iv(64, MCRYPT_DEV_RANDOM));

这是我当前创建密码的设置。我注意到,当我将注册页面上传到web主机时,页面执行大约需要1分钟,而在本地apache服务器上则是即时的。我把问题缩小到这行代码。您是否知道此函数存在任何执行时间问题,或者是否有更好的方法获取salt字符串(128长度)?

问题在于
MCRYPT\u DEV\u RANDOM
参数,从该参数读取将阻塞服务器,直到有足够的entrophy可用。相反,您应该使用:

$salt=bin2hex(mcrypt_create_iv(64, MCRYPT_DEV_RANDOM));
从铀矿层中读取是生成盐的更好选择,盐最初是随机供给的,但如果没有足够的entrophy可用,它不会阻塞。这还可以防止有人使用您的函数耗尽服务器的entrophy池

根据您使用的哈希函数的不同,
bin2hex()
函数不是最佳函数,因为结果字符串的字母表是有限的。您应该允许哈希函数接受的所有字符

由于PHP现在有自己的api来生成BCrypt哈希,我建议直接使用这个函数,它确实负责创建安全的salt。还有一个适用于早期PHP版本的兼容性包

$binarySalt = mcrypt_create_iv(64, MCRYPT_DEV_URANDOM);