我可以使用下面的代码插入一行。
USE pmdb;
INSERT INTO md5_tbl (md5_val, username, password) VALUES(MD5('abcdef'), 'usna', MD5('Aa123456'));
当我使用用户名字段选择行时,如何解密或解码密码?
答案 0 :(得分:3)
首先,MD5是一种散列算法=无法解密(除暴力攻击外,但......)
其次,不要将MD5用于散列密码,它根本不安全。相反,使用至少 SHA系列+称为“salting”的技术。
答案 1 :(得分:3)
MD5无法解密,
您应该在数据库中搜索输入密码的MD5值进行比较。
SELECT * FROM md5_tbl WHERE password = MD5('password') AND username = 'username'
答案 2 :(得分:3)
哈希无法逆转。它不是“加密”。我建议你看一下here来解释散列和加密之间的区别。
那就是说,我想你在登录时试图检查用户的密码。哈希的方式是:
用户输入的哈希密码。
从数据库中检索哈希密码。
比较哈希值(每字节字节数) - 如果匹配,则密码正确。
答案 3 :(得分:2)
MD5的想法是你不再解密它。而是加密用户提供的密码,并将其与存储在表中的值进行比较。
答案 4 :(得分:2)
你做不到。 MD5不是加密算法,它是一种散列算法。
您所做的是对新输入的密码进行散列并将其与存储在数据库中的散列进行比较:
select *
from md5_tbl
where username = ?username and password = md5(?password)
答案 5 :(得分:2)
彩虹桌? ; - )
MD5是一种单向散列算法。它不能被“解密”。
答案 6 :(得分:2)
select * from md5_tbl where username = 'username' AND password = MD5('password')
不要忘记清理输入以防止SQL注入攻击。
如果要反转MD5,则无法执行此操作。如果你想加密和放大,请查看RSA。解密一些东西。