【问题标题】:Is it more secure to prefix a password hash with a salt or to dissolve the salt within the hash?用盐作为密码散列前缀还是将盐溶解在散列中更安全?
【发布时间】:2014-02-02 15:26:39
【问题描述】:

假设我有两个字符串,一个哈希和一个盐

$hash = "1234567890";
$salt = "abcdefghij";

用盐作为哈希前缀是否更安全

$password = "abcdefghij1234567890";

或者溶解散列中的盐

$password = "a1b2c3d4e5f6g7h8i9j0";

第二个似乎更安全,但是是吗?

编辑:我目前正在使用 SHA512 方法来创建 128 位哈希和 128 位盐。

【问题讨论】:

  • 盐的用途是什么?是否受上述选择的影响?
  • 重要的不是“密码”,而是“哈希”和“盐”。如果我可以说,选择一个复杂的哈希和盐,将减少被“弄清楚”的机会。使用cryptbcrypt 或更好,PHP 的password hash 函数是一个好的开始。
  • @Fred-ii- 查看我的编辑
  • @user3236661 SHA-512 创建 512 位哈希,因此得名。
  • 我的错,@gumbo 我的意思是 128 字节

标签: php security hash passwords


【解决方案1】:

不,假设您使用的是体面的散列算法并不重要。 说到这个,你真的应该使用 bcrypt 进行密码散列,无论如何它都将盐作为单独的参数。

但是,您不应该将盐添加到哈希中,而是添加到密码before 哈希中。不然就没什么用了。

【讨论】:

    【解决方案2】:

    我想说你应该在 明文密码 前加上盐,然后 然后 散列整个内容。这样,实际上不可能检索密码的哈希值以进行暴力破解或在查找表中搜索。如果您只是在哈希前面加上一个盐,那么一旦攻击者看到两个或多个加盐散列紧挨着另一个,盐就会很容易识别。

    【讨论】:

    • 我假设 OP 正在讨论如何存储哈希和盐的组合。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 2013-04-06
    • 2015-08-20
    • 1970-01-01
    • 2016-11-03
    • 2012-03-24
    相关资源
    最近更新 更多