【问题标题】:What is the difference between hash salting and noncing?hash salting 和 noncing 有什么区别?
【发布时间】:2011-12-31 17:27:56
【问题描述】:

我已经阅读了这两个主题,但我似乎无法完全理解加盐和随机散列之间的区别。

【问题讨论】:

标签: security hash cryptography


【解决方案1】:

nonce = 使用一次的数字。如果您为要散列的每一位数据生成一个唯一的盐,那么它本质上也是一个随机数。

【讨论】:

  • 那么,如果双方使用随机数进行加密而不是散列,则必须对双方都可用,对吗?
  • 是的。在这种情况下,nonce 将是初始化向量的一部分(如果不是全部)。
  • 数据库上的主键在技术上是一个随机数。我认为他的意思是一个密码随机数......
  • 没有“加密”NONCE 这样的东西,如果你有一个单一的值来源,你也可以使用一个序列号,例如。你可以有一个随机的nonce,如果你不比较nonce,随机数应该足够大。
【解决方案2】:

盐是一个非秘密的随机值,用于确保相同的明文不会始终如一地散列到相同的输出值;用于防止Rainbow Tables等预计算攻击。

nonce(“使用一次的数字”)是一个 - 通常是随机生成的 - 与加密方案中的消息相关联的值,并且在某个指定范围内(例如给定的时间间隔或会话)必须是唯一的.它通常用于防止replay attacks

Nonce 和 salt 是相似的并且服务于相关的目的,但并不相同。两者通常是随机生成的,不是秘密的,用于防止可能针对系统的攻击。它们的不同之处主要在于使用它们的上下文以及重复的后果 - 重复的盐并不重要,但重复的随机数可能会产生可怕的后果。

【讨论】:

  • @DarkSquirrel42 好点。我试图想出一种情况,其中一个 nonce 需要保密,但无法立即想到一个。
  • 由于这是stackoverflow,我会指出,由于NONCE是一个数字,因此在将其用于加密之前,您需要知道数字的编码方式(转换为字节序列)协议。大多数情况下它只是一个静态字节数(对于随机 NONCE),但它不需要。
  • @owlstead 您总是需要知道您的数据是如何编码的,除非您只是将其视为一个单元,即 nonce 的情况。虽然“NONCE”的定义包括“数字”,但实际上不一定是一。
  • 对于在登录认证过程中使用 salt+nonce,请参阅此答案:stackoverflow.com/a/24978909/43615
【解决方案3】:

散列是一种不同于加密的方式(使用我们可以解密的密钥)。固定大小和数据的轻微变化会产生全新的哈希值。这就像指纹。示例:MD5,MD6,SHA-1,SHA-2 等等..


Rainbow 表、字典攻击和蛮力(GPU 每秒可以计算数十亿个哈希值)以哈希格式将密码存储在数据库中也不安全。为了避免这些问题,我们需要使用 Salt

使用 Salt(随机数),因此相同的密码不会总是生成相同的密钥。即简单地添加盐以使通用密码不常见。

Salt 是我们添加到哈希中以防止使用彩虹表进行彩虹攻击的东西,彩虹表基本上只是将哈希转换为密码的巨大查找表,如下所示:

dffsa32fddf23safd -> passwordscrete 
f32ksd4343fdsafsj -> stackoverflow

所以黑客可以找到这个彩虹表,为了避免这个问题,我们必须用密码和盐的组合来存储哈希。

hash= hashFunction(passowrd+salt)

NonceN编号仅使用一次)不需要是秘密或随机的,但它不能与同一把钥匙。这用于防止重放攻击(也称为重放攻击)。

【讨论】:

    猜你喜欢
    • 2020-06-15
    • 2010-10-27
    • 2014-06-27
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    相关资源
    最近更新 更多