我已经了解了这两个主题,但似乎无法完全理解散列盐值和散列随机数之间的区别。
我已经了解了这两个主题,但似乎无法完全理解散列盐值和散列随机数之间的区别。
nonce是“一次性使用的数字”的意思。如果您为要哈希的每个数据位生成唯一的盐值,则它本质上也是nonce。
哈希是一种单向过程,不像加密(使用密钥可以解密),它生成固定大小的值,并且数据的轻微更改会产生全新的哈希值。 它就像指纹一样。例如:MD5、MD6、SHA-1、SHA-2等。
以哈希格式在数据库中存储密码也不安全,因为可以使用彩虹表、字典攻击和暴力破解(GPU每秒可以计算数十亿个哈希)。 为了避免这些问题,我们需要使用盐。
使用盐(随机数)使得相同的密码不总是生成相同的密钥。即添加盐只是为了使常见密码变得不常见。
盐是我们添加到哈希中的东西,以防止使用彩虹表进行彩虹攻击,彩虹表基本上只是将哈希转换为密码的大型查找表,如下所示:
dffsa32fddf23safd -> passwordscrete
f32ksd4343fdsafsj -> stackoverflow
黑客可以找到这个彩虹表,为了避免这个问题,我们必须将哈希与密码和盐的组合一起存储。
hash= hashFunction(passowrd+salt)
Nonce(仅使用一次的数字)不需要保密或随机,但不能在相同密钥下重复使用。这用于防止重放攻击(也称为回放攻击)。