0

ユーザーのパスワードを含む pssword 変数があり、パスワードの最初と最後にいくつかの文字列が含まれているため、パスワードがソルトされます。以下は、このためのコードです。

$teacherpassword = md5(md5("j92".$teacherpassword."djS"));  

明らかに、パスワードをソルトするために選択された文字は、すべてのパスワードで同じ文字になります。

私が望むのは、ソルトの最初の 3 文字と最後の 3 文字がすべてランダムになるようにランダム文字ジェネレーターを作成して、各パスワードにランダムなソルトが含まれるようにすることです。

以下は、salt の文字をランダムに選択するために作成された php ジェネレーターです。

$salt = ""; 
for ($i = 0; $i < 40; $i++) { 
   $salt .= substr(
     "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 
     mt_rand(0, 63), 
     1); 
}

私の質問は、ジェネレーターにソルトの 6 つのランダムな文字を選択させ、それらの文字の 3 つをパスワードの前に貼り付け、他の 3 つをパスワードの最後に貼り付けるにはどうすればよいかということです。

例えば:

パスワード 1 は次のようになります。 $teacherpassword = md5(md5("jfs".$teacherpassword."sfS"));
パスワード 2 は次のようになります: $teacherpassword = md5(md5("4f3".$teacherpassword.pS"));
パスワード 3 は次のようになります: $teacherpassword = md5(md5("wpw".$teacherpassword."qq2"));

ご覧のとおり、すべてのパスワードにはソルト用の php ランダム ジェネレーターのおかげで独自のソルトが含まれています。

4

1 に答える 1

0

本当に簡単な解決策は、使用することですsubstr()

substr — 文字列の一部を返す

$randomSalt = "abcdef";

$preSalt = substr($randomSalt, 0,3); // abc
$postSalt = substr($randomSalt, 3,3);  // def

$password = md5(md5($preSalt.$teacherpassword.$postSalt));

もう 1 つの提案は、PHP のuniqueid()関数を使用して、パスワードのランダムなソルトを生成することです。

uniqid — 一意の ID を生成する

于 2012-08-26T23:34:13.253 に答える