密码加盐主要是针对用户的登录密码而言的,原始密码经过MD5(一种Hash算法)加
密后,一些固定长度的简单纯文本密码的密文也会被破解出来。因为同一串字符的
Hash加密后的密文是固定不变的。所以还是会被破解。
破解的常用方法有暴力破解和字典破解,也是最笨拙的方法,就是一个一个试。
所以二者的破解方法在时间(速度)和空间(存储)上都需要很大的资源,这样破
解密码的效率极低。
此路不通就另择他法,比如,使用彩虹表进行反向推出你的密码,彩虹表中是一
些常用的固定长度的纯文本的哈希值,当这张表越大,破解密码的机率就越大。所
以对于使用哈希算法加密的方式也就不那么安全了。如果被加密的原文不是固定的,
那样彩虹表就很难进行哈希码对照了。也就更安全了。
这种方法就是常说的“加盐”。盐(Salt)就是一个随机生成的字符串,每次修
改密码或者操作,都会生成新的随机字符串,将原始密码进行哈希算法之后,进行
加盐,就是把随机字符串混入到密码哈希值中,再将这个值再次进行哈希算法计算,
这样生成的密文就更安全了。
MD5(MD5(password)+salt)加盐算法
这样密码就很安全了。我们需要把盐保存起来,一般建议盐的保存位置与密文在
不同的库中。因为用户登陆时我们需要使用用户输入的密码明文与盐进行上面的双
重哈希算法计算出密文与数据库中的密文进行对比是否相同。如果盐被整丢了,那
就完犊子了,因为上面的MD5算法需要两个参数(密码原文与盐),缺一不可。
没有盐,就无法计算出密文进行对比。
密码加盐的设计理念
于 2023-04-03 11:56:33 首次发布