JoomlaのパスワードはMD5ハッシュされますが、パスワードはハッシュされる前にソルトされます。{hash}:{salt}
このソルトは32文字のランダムな文字列であるため、データベースに保存されます。
したがって、新しいパスワードハッシュを作成するには、次のようにします。md5($password.$salt)
編集
さて、パスワードをチェックするために、たとえばユーザーmyguy
がパスワードmypassword
を入力した場合、ユーザー名を持つデータベースから行を取得しますmyguy
。
この行には、と言うパスワードがあります4e9e4bcc5752d6f939aedb42408fd3aa:0vURRbyY8Ea0tlvnTFn7xcKpjTFyn0YT
。パスワードハッシュとソルトを分割します。
$hashparts = preg_split (':' , $dbpassword);
echo $hashparts[0]; //this is the hash 4e9e4bcc5752d6f939aedb42408fd3aa
echo $hashparts[1]; //this is the salt 0vURRbyY8Ea0tlvnTFn7xcKpjTFyn0YT
myguy
このソルトと入力したパスワードを使用してハッシュを計算します
$userhash = md5($userpassword.$hashparts[1]); // This would be 'mypassword' and the salt used in the original hash
これ$userhash
と$hashparts[0]
同一の場合、ユーザーは正しいパスワードを入力しました。