我正在使用md5来加密我的项目中的密码.
当用户点击忘记密码并提交电子邮件时,我必须向他发送他的密码.
但密码是使用md5加密的.生成新密码不应该做.因为在这个项目中,admin可以看到用户的所有细节.所以我必须向管理员显示原始密码.所以初始密码非常重要.那么我如何解密密码或以其他方式发送他的原始密码?
提前致谢…
哈希不是为了解密而设计的,这就是为什么它们通常被称为“单向哈希”,而不是仅仅是哈希值.
相反,无论是…
>生成一个新的密码,哈希,存储新密码哈希代替旧密码,并将新生成的密码发送给用户.
>生成新密码,将其加密,将其存储在临时密码的字段中,然后当用户使用该密码登录时,提示他们输入永久的新密码.
>生成一个nonce,将其存储在一个现场的字段中,并向用户发送一个链接,该链接将使他们访问一个页面以输入新的密码.
第三个选项可能是最好的,因为它并没有留下实际的密码(暂时的或不是临时的),而是看到用户的电子邮件的人,而且由于它使用了一个随机数,所以一旦使用它就不能被恶意用户再次使用.
用于密码的原因是专门用于防止他们以恶意用户可以通过查看数据库来确定密码的形式存储.
编辑:
如果你正在加密密码,这是不可能的.一般来说,允许管理员查看用户密码实际上是一个坏主意,因为很大一部分用户倾向于为多个事情使用相同的密码,一个管理员(比如公司网络)可能不是许多其他事情的管理员(比如用户的网上银行系统).
MD5不是加密算法,它是一个哈希算法.两者不一样;加密被设计为可逆的(因此是互补术语“解密”),而散列被设计为单向的.