7

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

4

4 回答 4

14

好的,让我们来看看这个。

该函数确实有密码长度限制。就像 PHP 中的所有字符串一样,它被限制为 2^31-1 个字节。

需要明确的是,PHP 没有办法处理比这更大的事情(至少在今天)。

所以功能本身是有限的。但是底层的加密算法呢?

BCrypt仅限于处理密码的前 72 个字符。但是,这通常不是这个答案中解释的问题

所以简而言之,的,它确实有一个有效的限制(它只会“使用”前 72 个字符和默认的唯一算法),,这不是问题,您也不应该尝试“修复”或“缓解”它。

于 2013-09-17T20:13:24.010 回答
2

password_hash本身没有长度限制。

然而,河豚

具有 64 位块大小和从 32 位到 448 位的可变密钥长度。它是一个 16 轮的 Feistel 密码,使用大的密钥相关 S-box。在结构上它类似于使用固定 S-box 的 CAST-128。维基百科

这意味着使用 CRYPT_BLOWFISH 作为密码(这是默认设置)时,有效限制为 56 个字符。

于 2013-09-17T16:41:13.097 回答
1

该功能没有任何限制,您只需要记住您的 memory_limit 即可。

编辑:您应该限制密码长度,否则它可能会减慢您的服务器(取决于算法)
请参阅 django:https ://www.djangoproject.com/weblog/2013/sep/15/security/

编辑 2:澄清:不应该限制为 14-20 个字符,应该是 4KB 或更多。

于 2013-09-13T18:58:05.420 回答
0

password_hash 函数不应该有任何长度限制。

于 2013-09-13T18:57:19.157 回答