salt经常由一组随机的比特位组成,它跟密码一起,作为生成加密密码的输入参数。salt数据增加了字典式攻击的复杂性:每个bit都会使字典式攻击需要的存储和计算加倍。
salt值有时候会被保密,这样,在密码数据库丢失时,会使破解密码的复杂性大大增加。加密协议包括SSL和Ciphersaber都使用salt。
salt的好处是:当salt足够大时,针对加密数据的简单字典式攻击几乎变得不可能。要么就是需要太大的空间,要么就是需要太长的时间。
比如,一个用户的密匙被盗了,而且据所知他使用了200,000个英文单词里的一个作为密码。系统使用32位的salt。由于salt的存在,攻击者预先计算好的哈希值变得一无所用。现在,他必须计算好(每个单词+2^32(4,294,967,296)种可能的salt值)的哈希值,直到找到匹配。那么,总共的计算量需要:2^32 * 200000 = 8.58993459 * 10^14次。密码本身可能是简单的,但是salt让破解变得不可能。