为什么盐的长度与散列值相同?

use*_*206 6 java security passwords

我已经读过,将要使用的盐应该与散列密码具有相同的长度,这背后的原因是什么?它会增加密码保护吗?我在这里读到了 :

为了使攻击者无法为每个可能的盐创建查找表,盐必须很长.一个好的经验法则是使用与散列函数输出大小相同的salt.例如,SHA256的输出是256位(32字节),因此salt应至少为32个随机字节.

Vla*_*lad 9

这里有一个很好的描述为什么需要密码盐.

不,您不需要您的盐与密码长度相同.实际上,文章中列出的所有实现都没有这样做.通常,对于每增加一点盐,您需要攻击者将其存储预算加倍.

因此,拥有10字节的盐应该足以满足当今的技术水平.另请注意,salt是二进制值而密码不是,因此盐长度应以位/字节而非字符来度量.