Php 使用mcrypt获取密码salt。在本地apache服务器上执行时间很快,但在web主机上执行速度非常慢
这是我当前创建密码的设置。我注意到,当我将注册页面上传到web主机时,页面执行大约需要1分钟,而在本地apache服务器上则是即时的。我把问题缩小到这行代码。您是否知道此函数存在任何执行时间问题,或者是否有更好的方法获取salt字符串(128长度)?问题在于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));
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);