我目前使用MD5加密在数据库中存储密码。我们之前没有密码重置功能。但现在我们正在实施它。所以我无法解密MD5并将密码发送给用户。但是我可以做,如果它是在base64加密。现在我有点困惑,这是最好的加密方法。
我已经做了强密码的客户端验证(如8字符长度,特殊字符等)。哪个是最好的加密方法base 64或MD5?
回答
Base 64不是一种加密机制,它是一种编码方案。它很容易颠倒过来,所以它不是保护关键数据的好选择。
密码的常用方法是用MD5对它们进行哈希处理,然后存储哈希。当用户再次登录时,对输入密码进行散列,并将其与存储的散列进行比较。
如果用户忘记了他的密码,那么您应该无法告诉他它是什么。相反,让他把它重置为其他东西(大概他能记得的东西)。
此外,正如@Phil Brown提到的,MD5 is not considered a strong encryption mechanism。 SHA-1将更适合完成这项任务。
Base 64编码通常用于通过仅允许ASCII文本的机制传输二进制数据。
Base64不是加密,它是一种容易可逆的编码机制。 MD5是单向加密哈希,尽管它使用is not recommended because it is cryptographically weak。
为了您的需要,您可能需要存储密码的散列(更适合salt),可能使用SHA-256或更高版本。当用户忘记密码时,您会为它们生成一个随机的一次性密码,并强制它们重新创建密码,或者在验证某些凭证后让它们执行密码。
Base64和MD5是没有加密方法。 Base64只是一种编码字符的方式,它绝对不提供安全性 - 它与以纯文本形式存储密码一样好。 MD5是一个散列函数,这意味着它是单向的并且不能被解密。
哈希值肯定是要走的路。 MD5没问题,但你应该切换到更安全的功能,如SHA-256。
至于“忘记密码”功能,从不存储用户的密码并将其发回给他们。相反,为他们生成(随机)临时密码,以便他们可以登录并更改密码。
最佳做法是使用MD5存储密码哈希,就像您现在(或甚至更好的SHA256)一样。
不要做密码恢复。相反,当用户忘记密码时,请创建一个新的随机密码并将其发送给他们。然后他们可以登录并将密码设置为他们喜欢的东西。更安全。
- 1. 最好的加密方法
- 2. 哪个是c#中最好的加密和解密算法?
- 3. 这是一个更好的XML属性:base = 64或encoding = base64
- 4. java中最好的多部分base 64编码器是什么?
- 5. 哪种安全MAVLink协议是最好的加密算法?
- 6. 记录哪个是最好的方式
- 7. 哪种方法最好加入mysql表?
- 8. 最好的方法来存储敏感数据php加密
- 9. 比MD5更好的方法?
- 10. 哪个编写scala方法最好?
- 11. 哪个最好Copyto()或Clone()?
- 12. 哪种方法最好?
- 13. 管理加密密钥的好方法?
- 14. 哪个地方最好?
- 15. 哪个是更新c中文件记录的最好方法?
- 16. 哪一个是最好的Flash H.264 HTTP Streaming方法?
- 17. 如何加密IOS中的sqlite文件,哪一个是好方法?
- 18. 哪里是最好的地方存储网站的密码salt?
- 19. 这是一种加密的好方法吗?
- 20. 欺骗黑客认为加密是md5而不是加密是好的/聪明的想法?
- 21. 哪个是删除Thread Local对象引用的最好方法
- 22. 哪个是处理GtkMenu激活回调的最好方法?
- 23. PHP - 哪一个是更好的方法空==或== NULL
- 24. MD5或Silverlight中的其他加密C#
- 25. Sha或Md5算法我需要在flex中加密和解密
- 26. 无法解码Base-64 URL
- 27. 哪一个是最好的OLEDB或Excel对象或数据库
- 28. 如何将MD5十六进制字符串转换为base-64 MD5字符串?
- 29. 如何将密码从md5转换成laravel加密方法
- 30. SQL过滤,哪种方法最好?
请阅读此前的问题+答案:http://stackoverflow.com/questions/2780198/phphow-to-send-the-original-password-to-the-user-when-he-clicks-forgot-password – Amber 2010-10-22 04:49:42
不要在客户端进行验证,除非您确认该验证被破坏。如果某人在某个时候写了一个备用客户端,那么你不希望他们在你的安全性中挖洞。你也可以在客户端进行检查,但这只是为了避免往返。 – 2010-10-22 04:52:48
Md5哈希不像以前那样安全,至少使用sha1,而sha256(从我所知道的)是足够安全的。 – Joakim 2010-10-22 04:53:04