insert password into database in md5 format?
本问题已经有最佳答案,请猛点这里访问。
有人能告诉我或解释我如何在MD5格式的数据库中插入密码吗?即使你能给我指明正确的方向,我也会感激的,因为我是MySQL的新手,谢谢。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $query="INSERT INTO ptb_users (id, user_id, first_name, last_name, email ) VALUES('NULL', 'NULL', '".$firstname."', '".$lastname."', '".$email."', '".$password."' )"; mysql_query($query) or dieerr(); $result = mysql_query("UPDATE ptb_users SET ptb_users.user_id=ptb_users.id"); |
使用
1 2 3 4 5 6 7 8 9 10 11 12 | $query="INSERT INTO ptb_users (id, user_id, first_name, last_name, email ) VALUES('NULL', 'NULL', '".$firstname."', '".$lastname."', '".$email."', MD5('".$password."') )"; |
但是
- 加密和压缩功能
- SQLFiddle演示
不要使用
1 | SHA256('".$password."') |
http://en.wikipedia.org/wiki/salt_u(密码学)
达伦·戴维斯说你应该使用盐的说法部分是正确的——他声称MD5不安全有几个问题。
您说过必须使用MD5哈希插入密码,但这并不能告诉我们为什么。是因为这是验证密码时使用的格式吗?您是否可以控制验证密码的代码?
使用salt的好处在于它避免了两个用户拥有相同密码的问题——他们也有相同的哈希值——这不是一个理想的结果。如果对每个密码使用不同的salt,则不会出现这种情况(对于非常大的数据量,仍然存在两个不同的密码发生冲突的风险,但我们现在将忽略这一点)。
因此,您可以让她为salt生成一个随机值,并将其存储在记录中,也可以使用您已经保存的一些数据,例如用户名:
1 2 3 4 5 6 7 8 9 10 11 12 | $query="INSERT INTO ptb_users (id, user_id, first_name, last_name, email ) VALUES('NULL', 'NULL', '".$firstname."', '".$lastname."', '".$email."', MD5('"$user_id.$password."') )"; |
(我假设您已经在代码的前面正确地转义了所有这些字符串)
您可以在mysql中使用md5()或在php中使用md5()。要使用salt,请在运行md5之前将其添加到密码中,例如:
1 2 |
最好对每个密码使用不同的salt。为此,您必须将盐保存在db(以及哈希)中。身份验证时,用户将发送其登录名并通过。您将在数据库中找到他的哈希和盐,并发现:
1 |
如果您想使用MD5加密,可以在PHP脚本中使用它。
1 2 3 |
然后以这种方式将其插入数据库,但是MD5是一种单向加密方法,几乎不可能毫不费力地解密。