以下のコードを使用して行を挿入できます。
USE pmdb;
INSERT INTO md5_tbl (md5_val, username, password) VALUES(MD5('abcdef'), 'usna', MD5('Aa123456'));
ユーザー名フィールドを使用して行を選択するときにパスワードを復号化またはデコードするにはどうすればよいですか?
まず、MD5はハッシュアルゴリズムです=復号化は不可能です(ブルートフォース攻撃を除くが...)
次に、パスワードのハッシュにMD5を使用しないでください。安全ではありません。代わりに、少なくとも「塩漬け」と呼ばれるSHAファミリ+手法を使用してください。
MD5は復号化できません、
比較するには、データベースに入力したパスワードのMD5の値を検索する必要があります。
SELECT * FROM md5_tbl WHERE password = MD5('password') AND username = 'username'
MD5の考え方は、それを再度復号化しないことです。代わりに、ユーザーが提供するパスワードを暗号化し、テーブルに保存されている値と比較します。
ハッシュを元に戻すことはできません。「暗号化」ではありません。ハッシュと暗号化の違いについては、こちらをご覧になることをお勧めします。
そうは言っても、ログイン時にユーザーのパスワードを確認しようとしていると思います。ハッシュを使用して行う方法は次のとおりです。
ユーザーが入力したハッシュパスワード。
データベースからハッシュされたパスワードを取得します。
ハッシュの比較(バイトごと)-一致する場合、パスワードは正しいです。
できません。MD5は暗号化アルゴリズムではなく、ハッシュアルゴリズムです。
新しく入力したパスワードをハッシュして、データベースに保存されているハッシュと比較します。
select *
from md5_tbl
where username = ?username and password = md5(?password)
レインボーテーブル?;-)
MD5は、一方向のハッシュアルゴリズムです。「復号化」することはできません。
select * from md5_tbl where username = 'username' AND password = MD5('password')
SQLインジェクション攻撃を防ぐために、入力をサニタイズすることを忘れないでください。
MD5を逆にしたい場合は、それを行うことはできません。何かを暗号化および復号化したい場合は、RSAを調べてください。