0

我想知道是否有一种方法可以更改我的网站散列密码的方式。当我的程序员朋友没有向 sha512 哈希添加盐时,他并不是最聪明的。所以现在它非常不安全,我希望改变它。当具有旧哈希类型的人登录时,我正在考虑制作一些复杂的代码来重新哈希,它会在添加盐后将变量设置为 true。或者我可以获取当前散列的密码,并以某种方式将盐融合到其中。如果不需要,我宁愿不重置我的用户数据库。任何想法都会有所帮助。我也是 php 菜鸟,所以请说明您是否包含代码。

使用此方法对其进行哈希处理。

<?php hash('sha512',"passwordhere") ?>
4

3 回答 3

2
  1. 更改您的用户表以包含“salt”列,默认值为“NULL”。
  2. 更改您的登录代码以检查用户是否有盐:
    • 如果是,请比较加盐哈希并登录
    • 如果不:
      1. 比较未加盐的哈希。
      2. 生成随机盐。
      3. 生成你的咸哈希。
      4. 将新盐和哈希存储在数据库中。
      5. 继续登录过程。

当然,您还需要更新您的代码以进行注册、密码更改/恢复等。

或者,您可以放入“hash_ver”列,而不是“salt”列,并使用它来确定使用哪种验证方法以及何时更新哈希。这样,如果您希望使用一种将盐与 bcrypt 之类的哈希打包在一起的哈希方法,您就不会因为试图弄清楚您正在处理的哈希类型而陷入困境。

于 2013-09-10T23:22:44.437 回答
1

每个密码存储系统都必须具有切换到更好的哈希算法的选项,您的问题不是一次性迁移问题。在回答这个问题时,我试图指出必要的步骤。

注意:像 SHA-* 这样的快速哈希算法不适用于哈希密码,而是直接切换到像 BCrypt 这样的慢速密钥派生函数。新的 PHP 函数password_hash()将使散列变得容易(它会为你生成一个安全的盐),并且是“面向未来的”,它也将使未来的切换成为可能。

于 2013-09-13T15:35:13.250 回答
0
$old_hash = hash('sha512',"passwordhere");
$salt = ''; // Generate salt here
$new_hash = hash('sha512', $old_hash.$salt) ;
于 2013-09-10T23:24:02.050 回答