我可以使用PHP 5.5 password_hash()
和password_verify()
的最大密码长度是多少?
答案 0 :(得分:12)
好的,我们来看看。
功能具有密码长度限制。就像PHP中的所有字符串一样,它限制为2 ^ 31-1个字节。
要明确的是,PHP无法处理大于此的任何事情(至少今天)。
所以功能本身是有限的。但是底层的加密算法呢。
BCrypt 仅限于处理密码的前72个字符。但是,这通常不是问题as explained in this answer。
所以简而言之,是它确实有一个有效的限制(它只会“使用”前72个字符和默认的唯一算法),并且没有这个不是问题,也不应该试图“修复”或“缓解”它。
答案 1 :(得分:2)
password_hash
本身没有长度限制。
Blowfish,但是
具有64位块大小和可变密钥长度,从32位到448位。它是一个16轮Feistel密码,使用大型密钥依赖的S盒。在结构上它类似于CAST-128,它使用固定的S盒。 <子>(的 Wikipedia 强>)子>
这意味着当使用CRYPT_BLOWFISH作为密码(默认值)时,有效限制为56个字符。
答案 2 :(得分:1)
该功能没有任何限制,你只需要记住你的memory_limit,这应该是全部。
编辑:您应该限制密码长度,否则可能会降低您的服务器速度(取决于算法)
见django:https://www.djangoproject.com/weblog/2013/sep/15/security/
编辑2:澄清:不应该限制为14-20个字符,应该是4KB或更多。
答案 3 :(得分:0)
password_hash函数不应有任何长度限制。