首页 > 解决方案 > 如何对mysql数据库进行哈希和加盐密码

问题描述

我已经看到很多关于散列和加盐密码的主题,然后将它们与 MySQL 数据库中的散列和加盐进行比较,但是它们都没有真正帮助。

它们要么真的“模糊”,要么没有使用正确的编码语言。

我正在用 Visual Basic 编码。

因此,我使用了一个名为“MyBB”的论坛软件,它将用户的密码加密为 MD5 哈希,并在其旁边生成一个盐。

我已经成功连接到 MySQL 数据库,并且可以使用用户名登录我的应用程序,但是因为我还没有对密码进行哈希处理并将其加盐然后比较两者..我无法使用我的原始登录密码 - 相反,我必须使用数据库中的 MD5 哈希密码。

我的问题是:如何对密码进行哈希处理,然后对其进行加盐,然后将两者进行比较,以便我能够使用原始密码登录,而无需使用数据库中的 MD5 哈希?

任何帮助,将不胜感激。

我已经搜索并阅读了许多主题,但是没有一个提供如何做到这一点。它简要提到您需要对其进行哈希处理并对密码进行加盐,然后比较两者,但是它没有提供任何代码或如何操作的步骤。在 Visual basic 中也很少有关于这样做的主题。它们中的大多数用于 php 和 c#,当您不主要使用这些语言进行编码时,这将无济于事。

标签: mysqlvb.nethashmd5salt

解决方案


散列和加盐在 1990 年代已经过时了,而 MD5 通常是散列的糟糕选择,尤其是密码,你永远不应该使用它

推荐的方法是使用password_hash正确散列密码,并password_verify验证它们。

默认情况下,这两者都使用Bcrypt,这是一种很难破解的特定于密码的哈希。

您可以在 PHP 和其他语言中使用 Bcrypt,它是一个定义良好的标准,同样受到 .Net 应用程序的支持。MD5,即使是“加盐”,也完全不够用,需要立即更换。

我强烈建议您尽快切换到基于 Bcrypt 的密码,并将所有用户从 MD5 迁移到 Bcrypt。如果您知道 MD5 哈希匹配,则每次他们登录时,您都可以更新密码字段。

有关 MD5 完全无用的示例,请搜索73868cb1848a216984dca1b6b0ee37bc.


推荐阅读