在MySQL中加密和解密MD5
本文关键字:解密 MD5 加密 MySQL | 更新日期: 2023-09-27 18:37:11
我可以使用下面的代码插入一行。
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,如果你想加密和解密某些东西。