更新和md5密码

时间:2009-11-27 12:47:50

标签: encryption

我使用加密将客户密码存储在数据库中。

当客户编辑其个人数据(包括密码)时,密码显示为*****

我怎么能理解使用改变了他的密码所以写入DB而不是一次又一次地加密。

我的意思是密码字段中的值是加密值。如果不更改密码必须使用相同的值更新(或根本不更新) 如果用户将密码更改为1234,我必须加密1234并将DB写入加密值

由于

3 个答案:

答案 0 :(得分:6)

不要从数据库发送md5哈希字符串。设置三个字段:

  • 旧密码
  • 新密码
  • 再次输入新密码

然后检查md5散列后的第一个字段是否等于DB中存储的字段。如果是,则散列第二个字段并存储它。 (仅当第二个和第三个相等时)

答案 1 :(得分:0)

当用户想要更改密码时,您需要输入旧密码和新密码。

这样,您可以对旧密码进行编码,检查编码值是否与数据库中的相同。如果它是相同的,那么您应该使用编码的新密码更新db中的密码。如果它不相同(或旧密码为空),则不更新。

这有助于您区分密码更改和仅设置更改。您还获得了一定程度的安全性,就好像有人抓住了您的用户会话一样,如果没有捕获原始密码,他也无法更改密码。

答案 2 :(得分:0)

几点:

  • MD5是一种散列算法,你永远无法反转散列,这就是重点。
  • 不要使用MD5,因为它已被破解,使用SHA2 +哈希算法(例如SHA256)
  • 只需使用旧密码对数据库中的密码进行散列,然后使用“旧密码”确认密码。
  • 另一个选项是重置密码,密码会通过电子邮件向已确认(希望)的联系电子邮件发送新密码。
  • 如果他们已经登录系统,您不需要再次“确认”旧密码。
  • 永远不要从数据库中发回哈希密码,这有点挫败了你想要完成的目标。