crypt()函数中的最大字符串输入是多少?

时间:2012-08-03 18:17:52

标签: php php-5.3

我认为我已经达到了72个字符crypt($string)的限制。这是代码:

<?php   
$p = '0123456789abcdefghij0123456789abcdefghij0123456789abcdefghij0123456789++';
var_dump($p);

$salt = '$2y$12$' . substr(str_replace('+', '.', 
            base64_encode(sha1(microtime(true), true))), 0, 22);
var_dump($salt);

$hash = crypt($p, $salt);
var_dump($hash);

var_dump($hash === crypt($p, $hash));
var_dump($hash === crypt($p.'a', $hash));
var_dump($hash === crypt($p.'-or-anthing else beyond this...', $hash));

输出是:

string(72) "0123456789abcdefghij0123456789abcdefghij0123456789abcdefghij0123456789++"
string(29) "$2y$12$nLe2d618C6YN0FQ0vODGvz"
string(60) "$2y$12$nLe2d618C6YN0FQ0vODGvutzCR5h0ngWmDSXtFdSt2dPAW5vgPd1e"
bool(true)
bool(true)
bool(true)

72 char是最大输入字符串是正常行为吗?

1 个答案:

答案 0 :(得分:7)

是的,经过一番调查后,bcrypt算法限制为72个字符。除此之外的任何事情都会被截断。

然而,作为设计用于密码散列的散列算法,我怀疑你是否需要担心这个限制。