【问题标题】:Securing Passwords with a Hash使用哈希保护密码
【发布时间】:2012-06-12 15:26:23
【问题描述】:

我正在阅读保护密码的不同技术。我知道,无论你采取什么预防措施,从长远来看,你只会减缓一个坚定的黑客。我研究了 bcrypt 在 PHP 和 PBKDF2 中的使用。

暂时忽略您如何创建哈希。如果一组说 4 个或更多随机选择的 ASCII 字符在预定位置输入到散列中,这会有什么用。有不同长度的哈希吗?所以如果你只计算字符的数量,你可以让一种类型说 md5 看起来像另一种?

我知道这又只会减慢知道您正在这样做的人的速度,并且他们会获得您用来放置随机字符的位置?

【问题讨论】:

  • 只是小费;你试过查看salts
  • 是的,我研究过盐。我也想提他们,但正如我所说,忽略哈希是如何创建的,我忘了提他们
  • 我很惊讶这还没有关闭。 SO上已经有好几个类似的话题了。

标签: php encryption hash md5


【解决方案1】:

在散列中放置随机字符以确保其安全是没有意义的。因为最终您必须找到实际的哈希值并与根据用户输入计算生成的哈希值进行比较。

更好的是,为哈希使用种子。假设hash 是一个通用函数,$seed 是一个种子,你可以这样做,

$seed = 'a_constant_value';
$seeded_hash = hash( $seed . $password );

如果您不希望种子成为常量,请将用户的另一个凭据添加到哈希中。

$seed = 'a_constant_value';
$user_credential = 'any_data_of_this_user';
$seeded_hash = hash( $seed . $user_credential. $password );

在此确保此用户凭据对于每个用户都是不变的。它可以是用户的生日、血型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多