一些网站的数据库管理着用户的ID及口令,口令以MD5等加密后的形式存在,但是有些时候可能数据库泄露,HASH值被攻击者获取,如果此HASH值对应的口令是弱口令(被很多用户采用),则黑客可以通过此HASH暴力破解获取其他用户的ID及口令,破坏数据的机密性。
通过加入盐值(salt)即盐化可以很好的防治这种攻击手段。盐值是一组随机的字符串,通过插入在口令后进行HASH算法,这样即使是相同的口令,插入不同的盐值后生成的HASH值也是不相同的,由于MD5的不可逆性,想要逆向破解MD5也是非常耗时间的。
具体的流程是:
用户注册时:
1、用户在网站注册时提供ID与口令
2、系统为用户分配盐值
3、盐值插入口令后进行HASH
4、将ID,HASH值与盐值存入数据库
身份验证时:
1、用户提供ID与口令
2、系统在数据库中通过用户提供的ID查找HASH值与盐值
3、将盐值插入用户提供的口令后进行HASH
4、将HASH值与数据库中的HASH值比较,相等则验证成功,反之验证失败