2012-07-18 16 views
8

ログインシステムを設定しようとしていますが、1つの問題を解決できません: PHPはmd5();PHP md5()はMySQL md5とは異なる出力を返します

$password = md5("brickmasterj"); 
return $password; 

戻り値:

3aa7b18f304e2e2a088cfd197351cfa8 

しかし、MySQLの同等は私に短いバージョン提供します:

3aa7b18f304e2e2a08 

何をPHPでMySQLの...たとえば

、より問題?パスワードを確認しながらこれをどうすればできるのですか?

+0

を使用してPHPを使用して呼び出すことができますmysqlのテーブルに行くべき?私はあなたのコラムに幅/サイズが18文字しかないと感じています。 – Gavin

答えて

8

私はあなたのテーブルの列の長さの問題は、少なくとも32

+0

右のように、mysqlの値がPHP生成文字列の始まりで、長さも18文字であることがわかります:) – mishu

+0

ありがとう、それは問題でした。列の長さに最大値がありました。 – Jers

2

にあなたが単純なクエリを行うだろう場合は、MySQLが< 32の長さのそれを返しまさかとパスワードフィールドの長さを設定していないと思いますSELECT md5('brickmasterj')のように表示されます。今では、値が十分ではない列に値を挿入する可能性が最も高いです。

2

データベースフィールドの長さは32文字ですか? mysqlのmd5を使ってデータベースに書き込んでいますか?

+0

ありがとう、それは問題でした、列の長さに最大=> -1 ....ありがとうございました!あなたはとてもプロです。 – kinaesthesia

0

ハッシュサイズは常に固定されている場合。あなたの場合、ハッシュサイズは128ビットです。 ASCII文字列に変換すると、16進数のみを含む32文字の文字列になります。 あなたは長さが少なくとも32 例である必要があり、変数の文字を格納している場合はそう:password varchar(32) は、あなたが/更新を挿入するか、MySQLのMD5の出力を選択している select password from table where password =md5($password);

関連する問題