【问题标题】:Which is best encryption method base 64 or MD5?哪种是最好的加密方法 base 64 或 MD5?
【发布时间】:2011-04-28 23:31:27
【问题描述】:

我目前正在使用 MD5 加密将密码存储在数据库中。我们之前没有密码重置功能。但现在我们正在实施它。所以我无法解密 MD5 并将密码发送给用户。但是如果它在base64中加密我可以做到。现在我有点困惑哪种是最好的加密方法。
我已经对强密码(如 8 个字符长度、特殊字符等)进行了客户端验证。

【问题讨论】:

  • 请阅读上一个问题+答案:stackoverflow.com/questions/2780198/…
  • 不要在客户端进行验证,除非您同意验证被破坏。如果有人在某个时候编写了备用客户端,您不希望他们在您的安全性中戳漏洞。您也可以在客户端进行检查,但这只是为了避免往返。
  • Md5 哈希不像以前那么安全了,至少使用 sha1 并且 sha256(据我所知)足够安全。
  • @Joakim:MD5 从来没有那么安全。
  • @Amber 确实如此,但现在我们知道它是不安全的,并且众所周知如何利用这些漏洞。

标签: encryption


【解决方案1】:

Base 64 不是一种加密机制,它是一种编码方案。它很容易被逆转,因此它不是保护关键数据的好选择。

密码的常用方法是使用 MD5 之类的东西对其进行散列,然后存储散列。当用户再次登录时,对输入密码进行哈希处理,并将其与存储的哈希值进行比较。

如果用户忘记了密码,您应该无法告诉他密码是什么。相反,让他将其重置为其他东西(大概是他能记住的东西)。

另外,正如@Phil Brown 提到的,MD5 is not considered a strong encryption mechanism。 SHA-1 更适合这项任务。

Base 64 编码通常用于通过只允许 ASCII 文本的机制传输二进制数据。

【讨论】:

  • 忘记密码的常用方法是重置密码,向用户发送新密码并在登录时强制他们更改密码。此外,SHA1 是一种比 MD5 更强大的哈希算法
  • 在这个忘记密码的时候还能找回密码吗?
  • @vinothkumar:你没有。您为他们随机生成一个全新的密码 - 不是他们选择的。此外,一旦他们重置密码,如果他们在一段时间后未能更改密码,我会考虑锁定帐户,因为电子邮件是以明文形式发送的。
  • MD5 根本不是一种加密机制。这是一种散列机制。
【解决方案2】:

Base64 不是加密,它是一种容易可逆的编码机制。 MD5 是一种单向加密哈希,尽管它使用 is not recommended because it is cryptographically weak

根据您的需要,您可能希望存储密码的哈希值(最好使用salt),可能使用 SHA-256 或更好。当用户忘记密码时,您会为他们生成一个随机的一次性使用密码并强制他们重新创建密码,或者只是让他们在验证某些凭据后重新创建密码。

【讨论】:

    【解决方案3】:

    Base64 和 MD5 不是加密方法。 Base64 只是一种编码字符的方式,它绝对不提供任何安全性——它与以纯文本形式存储密码一样好。 MD5是一个哈希函数,意味着它是单向的,不能被解密。

    哈希绝对是要走的路。 MD5 没问题,但你应该切换到更安全的功能,例如 SHA-256。

    对于“忘记密码”功能,从不存储用户的密码并将其发回给他们。相反,为他们生成一个(随机)临时密码,以便他们可以登录并更改它。

    【讨论】:

      【解决方案4】:

      最佳做法是像现在一样使用 MD5 存储密码哈希(甚至更好的 SHA256)。

      不要进行密码恢复。相反,当用户忘记密码时,创建一个新的随机密码并将其发送给他们。然后他们可以登录并将密码设置为他们喜欢的密码。更安全。

      【讨论】:

        猜你喜欢
        • 2012-05-15
        • 1970-01-01
        • 2020-11-16
        • 1970-01-01
        • 2011-07-04
        • 2019-05-22
        • 1970-01-01
        • 1970-01-01
        • 2012-02-08
        相关资源
        最近更新 更多