6

crypt($string)72文字の制限に達したと思います。コードは次のとおりです。

<?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文字なのは正常な動作ですか?

4

1 に答える 1

7

はい、少し調べたところ、bcrypt アルゴリズムは 72 文字に制限されています。それを超えるものはすべて切り捨てられます。

ただし、パスワードハッシュ用に設計されたハッシュアルゴリズムであるため、その制限について心配する必要はないと思います.

于 2012-08-03T20:20:02.477 に答える