0

多くの調査の結果、それが最良の選択肢であると思われるため、crypt() を使用してデータベースのパスワードをソルトを使用して暗号化することにしました。

なぜこれが機能して一致するのか、私は興味があります:

$info['password'] == crypt($_POST['password'])

そして、このように同じように比較すると、次のようにはなりません:

$info['password'] === crypt($_POST['password'])

何か案は?

ありがとう。

4

2 に答える 2

2

ドキュメントには、発生している現象が説明されています。2 番目の引数のドキュメントには次のように記載されています。

ハッシュのベースとなるオプションのソルト文字列。指定しない場合、動作はアルゴリズムの実装によって定義され、予期しない結果につながる可能性があります。

以下を実行すると、10 個の異なる値が得られる可能性があります。

<?php
$string = "password";
for ($i = 0; $i < 10; $i++) {
    echo crypt($string) . "\n";
}

私は以下を取得します:

$1$sWCzgR2e$vjR1CagStx0QbRYy/VbWm.
$1$C5TexeGI$ifWZ3mhGKthQ.ZW1UEswl/
$1$miA.EAYy$A6amxA.B4HvebndP/2ydx1
$1$izL6b3lz$hKncuA4oGv.8DAlAcybm..
$1$EqPefzSc$1XvQFf7pqFeuFz68lA1tv0
$1$njFWwWUo$NeQxtRHyUUzivVhidQSt5/
$1$LH3CVBV1$IIPPuHPUNL04ODtuRw0WR0
$1$/K75BwgK$MhSmhXtXF9Gn6ujx3YgE30
$1$OfddZpSQ$4u.dgsAWe4M/bOerUYTxr0
$1$G6JPvJpQ$aGvHluWRSy659MUe9P/aN.

呼び出しの 2 番目の引数としてデータベース ソルトを使用することをお勧めしますcrypt($password, $salt)

于 2011-04-16T10:53:41.430 に答える
-1

演算子「==」は 2 つの変数が同じ値を持っているかどうかを確認し、「===」演算子は変数が同じ値と型を持っているかどうかを確認します: http://nz.php.net/manual/ en/language.operators.comparison.php

だから 1 == "1" は真 1 === "1" は真ではない

于 2011-04-16T10:56:13.940 に答える