首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将MD5转换为任何其他哈希?

如何将MD5转换为任何其他哈希?
EN

Stack Overflow用户
提问于 2016-05-19 12:50:27
回答 3查看 2.1K关注 0票数 3

我刚刚下载了多年前他使用的我最好的朋友脚本,所有的密码都是使用MD5哈希,我想要修改。现在我不太擅长编码,所以我问你们从哪里开始。我是在数据库中还是在脚本中转换它呢?我希望从现在开始每个注册的人都有另一个哈希,我想的是SHA-2。

所以,我想在代码中应该有md5的意思,我将把它改为SHA-2?我说的对吗?如果这里有人能告诉我代码中的MD5哈希是什么样子的话,我可以在每个文件中搜索它,直到找到为止。另外,请告诉我如何把它换成SHA-2。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-19 13:12:04

因为不能解密MD5,所以可以这样处理迁移,并使用户看不到它:

一旦您决定了要使用的散列方法(我建议使用内建函数来处理密码安全性):

  1. 根据要使用的散列方法,向用户数据库中添加新的哈希列。
  2. 在用户登录时,检查该表以查看他们是否有MD5密码(并且与其匹配),并查看是否输入了新的哈希。 如果他们没有新的哈希,请根据他们登录的密码在新列中创建一个哈希。 如果他们有一个新的哈希,验证他们的密码与新的哈希。

在某一点上,每个用户,凭借登录,都会更新他们自己的散列。

此外,在散列之前,请确保您对不要逃避密码或使用任何其他清洗机制。这样做会更改密码并导致不必要的额外编码。

票数 7
EN

Stack Overflow用户

发布于 2016-05-19 13:30:51

我喜欢杰伊的回答,但还有更好的方法。

您需要DB中的另一个字段。在这个例子中,我们将它称为legacy。它是一个简单的是/否,默认为No。您所做的就是获取所有的MD5散列,并将它们推入password_hash。然后在MD5上编写新哈希,并将legacy设置为

当您登录时,您将提取他们的记录(基于用户名),并获得密码和legacy字段。然后你做这样的事

代码语言:javascript
复制
$password = $_POST['password'];
// $result is the result from your query. I like arrays so we'll use that
if($result['legacy'] == 'Yes') $password = md5($password);
if(password_verify($password, $result['password']))

这做了两件事

  1. 您不需要首先知道MD5散列中有什么
  2. 你仍然在使用password_hash

请记住,如果他们更新密码,请将legacy字段设置为No

票数 1
EN

Stack Overflow用户

发布于 2016-05-19 13:14:11

md5哈希函数称为md5("my password")hash("md5", "my password")。您可以用hash("sha256", "my password")hash("sha512", "my password")替换。

但是.

这些也不太安全。使用建议的散列()函数。这个函数同样简单:password_hash(string $password , integer $algorithm),其中算法是PASSWORD_*常量之一。

阅读函数页和阅读这些注释中的算法。上的注释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37323746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档