-1

ハッシュ化されたパスワードを mysql データベースに保存したいので、CodeIgniter で次のメソッドを開発します。

private function hashing($password = '',$mail = '')
{
    $hashcode = md5($password, $mail);
    return sha1($hashcode,md5($hashcode.$mail));
}

挿入用:

$data = array('mail'=>$mail,'password'=>$password,'actived'=>1,'time'=>time());
$this->db->insert('users', $data);

パスワードの代わりに他のフィールドが正しく挿入されました。

それは次のようなものを生成します

òLmyÉZÔe+ú§3GèÇu'</pre>

mysql データベースに保存できません。どこに問題がありますか?

edit database 照合順序は utf8_unicode_ci edit CodeIgniter を使用しているので、mysql_real_ は必要ありません...

4

2 に答える 2

2

おそらくこれを行うつもりでした:

return sha1($hashcode . md5($hashcode.$mail));

これの代わりに:

return sha1($hashcode,md5($hashcode.$mail));

の 2 番目の引数sha1()はブール値であり、ハッシュを生の形式で返すか文字列形式で返すかを制御します (false = 文字列、これを挿入します)。

http://php.net/manual/en/function.sha1.php

于 2012-07-30T23:23:42.430 に答える
2

関数 sha1 を正しく使用していません。その署名は

string sha1 ( string $str [, bool $raw_output = false ] )

md5 関数は false ではないもの (何らかの文字列) に評価されるため、生のバイナリ出力が得られます。

ところで、あなたは md5 関数で同じ間違いを犯しています、それは sha1 と同じ署名を持っています

string md5 ( string $str [, bool $raw_output = false ] )
于 2012-07-30T23:24:37.953 に答える