0

crypt() で奇妙な動作をしています。Zend での私のコードは次のとおりです。

$correct_password_hash = $this->getHelper('User')->generateHash('bd468cffe6b179d8e5ef30bd993d37e5','572906092501a20f4222a54.54479708');             
$edited_password_hash = $this->getHelper('User')->generateHash('bd468cffe6b179d8e5ef30bd993d37e','572906092501a20f4222a54.54479708');

echo "Correct Password Hash - ".$correct_password_hash."<br/>";
echo "Edited Password Hash - ".$edited_password_hash;

md5 で生成された文字列をヘルパー関数の generateHash に最初のパラメーターとして渡し、salt を 2 番目のパラメーターとして渡します。生成されたハッシュを $correct_password_hash 変数に保存します。

同じヘルパー関数の 2 回目の呼び出しで、最初のパラメーターの末尾にある文字 5 を削除しました。2 番目のパラメーターは同じです。ただし、最初のハッシュと同じハッシュを生成します。

出力は次のとおりです。

正しいパスワード ハッシュ - 57CO1Lzyk81kk
編集されたパスワード ハッシュ - 57CO1Lzyk81kk

ヘルパーの generateHash は次のとおりです。

public function generateHash($md5, $salt)
{
    return crypt($md5, $salt);
}

これは crypt() がどのように機能するはずですか?

ありがとう。

4

1 に答える 1

3

crypt()は、デフォルトで標準のDESベースのアルゴリズムになっています。これは、パスワードの最初の8文字と、ソルトの最初の2文字のみを使用します。

crypt()の動作を変更する方法の詳細については、crypt()のドキュメントを参照してください:http: //php.net/crypt

パスワードハッシュを行う場合は、bcryptを使用してください。

于 2012-08-02T08:47:34.730 に答える