我刚刚下载了多年前他使用的我最好的朋友脚本,所有的密码都是使用MD5哈希,我想要修改。现在我不太擅长编码,所以我问你们从哪里开始。我是在数据库中还是在脚本中转换它呢?我希望从现在开始每个注册的人都有另一个哈希,我想的是SHA-2。
所以,我想在代码中应该有md5的意思,我将把它改为SHA-2?我说的对吗?如果这里有人能告诉我代码中的MD5哈希是什么样子的话,我可以在每个文件中搜索它,直到找到为止。另外,请告诉我如何把它换成SHA-2。
谢谢。
发布于 2016-05-19 13:12:04
因为不能解密MD5,所以可以这样处理迁移,并使用户看不到它:
一旦您决定了要使用的散列方法(我建议使用内建函数来处理密码安全性):
在某一点上,每个用户,凭借登录,都会更新他们自己的散列。
此外,在散列之前,请确保您对不要逃避密码或使用任何其他清洗机制。这样做会更改密码并导致不必要的额外编码。
发布于 2016-05-19 13:30:51
我喜欢杰伊的回答,但还有更好的方法。
您需要DB中的另一个字段。在这个例子中,我们将它称为legacy。它是一个简单的是/否,默认为No。您所做的就是获取所有的MD5散列,并将它们推入password_hash。然后在MD5上编写新哈希,并将legacy设置为是
当您登录时,您将提取他们的记录(基于用户名),并获得密码和legacy字段。然后你做这样的事
$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']))这做了两件事
password_hash请记住,如果他们更新密码,请将legacy字段设置为No
发布于 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_*常量之一。
阅读函数页和阅读这些注释中的算法。上的注释。
https://stackoverflow.com/questions/37323746
复制相似问题