0
insert into test(username,pwd) values('Jim',ENCODE('123456','Jim'));
select username from test where username='Jim' and pwd=ENCODE('123456','Jim')

insert into test(username,pwd) values('Ryan',SHA('123456'))
select username from test where username='Ryan' and pwd=SHA('123456')

insert into test(username,pwd) values('Jack',MD5('123456'))
select username from test where username='Jack' and pwd=MD5('123456')

SHAandを使用しても正しい結果が得られないのはなぜMD5ですか? パスワードはどちらも 123456 ですが、暗号化方法が異なると正しい結果が得られません。

1 つ目は、「Jim」を正しく出力できます。しかし、2 番目と 3 番目のものは "Ryan" または "Jack" を出力できず、結果セットはnull. なんで?暗号化されたパスワードでユーザーを検証する方法を知りたいです。

4

3 に答える 3

1

あなたが何か間違ったことをしている可能性がありますか?私にとってはうまくいきます。

クエリとの SQL Fiddle リンク

私の推測では、ハッシュの切り捨てられたバージョンを保存していると思います。

于 2013-03-30T16:16:12.180 に答える
0

注意 MD5 および SHA-1 アルゴリズムのエクスプロイトが知られるようになりました。代わりに、SHA2() など、このセクションで説明されている他の暗号化関数のいずれかを使用することを検討してください。

http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html

于 2014-11-13T09:55:58.423 に答える