PHP password_hash()password_verify()最大密码长度?

时间:2013-09-13 18:54:22

标签: php security php-password-hash

我可以使用PHP 5.5 password_hash()password_verify()的最大密码长度是多少?

4 个答案:

答案 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函数不应有任何长度限制。