crypt() 関数でパスワードを暗号化しました。ユーザーがログインしたいとき、これを入力してデータベースに保存されているパスワードを確認するにはどうすればよいですか?
例:
$pass = "fgyi34".$pass."@1187Gh";
$hashed_password = crypt($pass);
crypt() 関数でパスワードを暗号化しました。ユーザーがログインしたいとき、これを入力してデータベースに保存されているパスワードを確認するにはどうすればよいですか?
例:
$pass = "fgyi34".$pass."@1187Gh";
$hashed_password = crypt($pass);
暗号化パスワードは元に戻すことができないため、以下の手順に従ってパスワードを暗号化します。
1) 乱数を生成し、それを暗号化します。2) 暗号化後、それをデータベース列フィールドに保存します。3) ログイン時に、入力したパスワードを照合し、再度暗号化します。4) ハッシュされたパスワードでこの新しいパスワードを確認します。
読んでManual
ください。
ハッシュのベースとなるオプションのソルト文字列。指定しない場合、動作はアルゴリズムの実装によって定義され、予期しない結果につながる可能性があります
例 #1
<?php
$hashed_password = crypt( 'mypassword' ); // let the salt be automatically generated
/*
You should pass the entire results of crypt() as the salt for comparing a
password, to avoid problems when different hashing algorithms are used. (As
it says above, standard DES-based password hashing uses a 2-character salt,
but MD5-based hashing uses 12.)
*/
if ( crypt( $user_input, $hashed_password ) == $hashed_password ) {
echo "Password verified!";
}
?>
したがって、ユーザーがログインしようとするたびに、password
データベースから暗号化されたものを取得し、と の両方をusername
比較します。 user input
hashed password
crypt
例 #2
<?php
$username = $_POST["username"];
$password = $_POST["password"];
$passhash = "SELECT `password` FROM `table` WHERE `username` = '{$username}'";
// execute the query and get the hashed password
if ( $passhash ) {
if ( crypt( $password, $passhash ) == $passhash ) {
echo "Password verified!";
}
}
?>