1

MD5を使用してデータベースに登録されたパスワードをハッシュしたいのですが、ログイン時に同じことを行いますが、問題は、登録プロセスでパスワードがハッシュされますが、ログインでは、これは間違ったパスワードであるためシステムが機能することです

register.php

 //ADD MD5 hash to the password 
       $db_pass=md5($pass1);
//************Insert all the user's input to the database**************************//
$query = mysql_query("INSERT INTO user(user_name, first_name, last_name, governorate,
 district, village, birth_date, email_address, specialization, password, 
 registered_date)VALUES('$username', '$firstname', '$lastname', '$governorate',
 '$district', '$village', '$bdate', '$email', '$specialization', '$db_pass', 
 now())") or die("could not insert data");  

login.php

$pass = md5($pass);

$sql=mysql_query( "SELECT user_id, email_address, first_name, user_name FROM user 
WHERE email_address='$email'
AND password='$pass'LIMIT 1") or die("error in user table");
4

2 に答える 2

1

MD5 を使用しないでください。これは安全ではなく、パスワード ハッシュの目的で使用するには速すぎます (なぜ高速なパスワード ハッシュ アルゴリズムを使用することが悪い考えなのか理解できない場合は、ブルート フォース攻撃に関する Wiki ページを参照してください)。 . Bcryptのようなものの使用を検討する必要があります。

crypt 関数経由で Bcrypt を使用できます。

$userPassword = 'testpassword';
$hashed = crypt($userPassword, '$2a$15$usesomesillystringforsalt$');
echo $hashed;

誰かが上で述べたように、ircmaxell はgithub で利用できるかなり良いライブラリを持っています。このライブラリは、PHP 5.5 (現在ベータ版) で利用可能になる password_hash 関数と前方互換性があります。

于 2013-05-11T09:34:40.327 に答える
0

$pass1 と $pass は同じですか? ハッシュする前に両方が同じであることを確認してください。

MD5 は安全ではないため、ソルトで sha256/sha512 を使用するか、強力なハッシュを生成するためにphpassを使用します (phpass は WordPress でパスワード ハッシュを生成するために使用されます)。

于 2013-05-11T09:45:48.000 に答える