我可以在 PHP 5.5 中使用的最大密码长度是password_hash()
多少password_verify()
?
4 回答
好的,让我们来看看这个。
该函数确实有密码长度限制。就像 PHP 中的所有字符串一样,它被限制为 2^31-1 个字节。
需要明确的是,PHP 没有办法处理比这更大的事情(至少在今天)。
所以功能本身是有限的。但是底层的加密算法呢?
BCrypt仅限于处理密码的前 72 个字符。但是,这通常不是这个答案中解释的问题。
所以简而言之,是的,它确实有一个有效的限制(它只会“使用”前 72 个字符和默认的唯一算法),不,这不是问题,您也不应该尝试“修复”或“缓解”它。
password_hash
本身没有长度限制。
然而,河豚
具有 64 位块大小和从 32 位到 448 位的可变密钥长度。它是一个 16 轮的 Feistel 密码,使用大的密钥相关 S-box。在结构上它类似于使用固定 S-box 的 CAST-128。(维基百科)
这意味着使用 CRYPT_BLOWFISH 作为密码(这是默认设置)时,有效限制为 56 个字符。
该功能没有任何限制,您只需要记住您的 memory_limit 即可。
编辑:您应该限制密码长度,否则它可能会减慢您的服务器(取决于算法)
请参阅 django:https ://www.djangoproject.com/weblog/2013/sep/15/security/
编辑 2:澄清:不应该限制为 14-20 个字符,应该是 4KB 或更多。
password_hash 函数不应该有任何长度限制。