2

以下のコードを使用して行を挿入できます。

USE pmdb;
INSERT INTO md5_tbl (md5_val, username, password) VALUES(MD5('abcdef'), 'usna', MD5('Aa123456'));

ユーザー名フィールドを使用して行を選択するときにパスワードを復号化またはデコードするにはどうすればよいですか?

4

7 に答える 7

6

まず、MD5はハッシュアルゴリズムです=復号化は不可能です(ブルートフォース攻撃を除くが...)

次に、パスワードのハッシュにMD5を使用しないでください。安全ではありません。代わりに、少なくとも「塩漬け」と呼ばれるSHAファミリ+手法を使用してください。

于 2012-06-13T08:16:50.787 に答える
4

MD5は復号化できません、

比較するには、データベースに入力したパスワードのMD5の値を検索する必要があります。

SELECT * FROM md5_tbl WHERE password = MD5('password') AND username = 'username'
于 2012-06-13T08:16:53.027 に答える
3

MD5の考え方は、それを再度復号化しないことです。代わりに、ユーザーが提供するパスワードを暗号化し、テーブルに保存されている値と比較します。

于 2012-06-13T08:14:55.493 に答える
3

ハッシュを元に戻すことはできません。「暗号化」ではありません。ハッシュと暗号化の違いについては、こちらをご覧になることをお勧めします。

そうは言っても、ログイン時にユーザーのパスワードを確認しようとしていると思います。ハッシュを使用して行う方法は次のとおりです。

  1. ユーザーが入力したハッシュパスワード。

  2. データベースからハッシュされたパスワードを取得します。

  3. ハッシュの比較(バイトごと)-一致する場合、パスワードは正しいです。

于 2012-06-13T08:17:52.387 に答える
2

できません。MD5は暗号化アルゴリズムではなく、ハッシュアルゴリズムです。

新しく入力したパスワードをハッシュして、データベースに保存されているハッシュと比較します。

select *
from md5_tbl
where username = ?username and password = md5(?password)
于 2012-06-13T08:15:06.983 に答える
2

レインボーテーブル?;-)

MD5は、一方向のハッシュアルゴリズムです。「復号化」することはできません。

于 2012-06-13T08:15:17.250 に答える
2
select * from md5_tbl where username = 'username' AND password = MD5('password')

SQLインジェクション攻撃を防ぐために、入力をサニタイズすることを忘れないでください。

MD5を逆にしたい場合は、それを行うことはできません。何かを暗号化および復号化したい場合は、RSAを調べてください。

于 2012-06-13T08:15:50.467 に答える