在WEB开发过程中,存储密码常用的加密方法就是使用MD5不可逆加密,也就是说当用户将密码交给我们存储的时候,我们不需要看到他们的密码,只需要保存加密以后的密文即可。

问题

MD5不可逆,但只要有足够的算力+PB级的数据库,这个时候MD5加密就变得具有可破解性,这是很危险的,一但用户数据在存储、备份等操作过程或由于系统安全原因造成造成意外用户信息泄漏,不仅会降低企业信誉还可能要承担一定的法律责任。

解决

其实解决上述方法,在搜集的过程中我也见到了各种奇葩的操作,比如把服务器IP作为数据值掺杂在密文中。或者把明文加密成32字符十六进制数以后,将前十六位和后十六位拆分开,将他们分布加密成32字符十六进制数后再合并,接着重新走一遍MD5加密。此种方法以此类推,我们还可以在拆分以后分别加入一些用户的信息,也就是在字符串前/后每次加入自定义字符串,例如用户的UID/注册时间,然后将他们与密码加密后的值组合,再次进行MD5加密,这样得到的是一个少数规则的密文,没有足够的数据库来支撑破解。

总结

思路就是这个思路,总的来说想要安全存储用户数据,就要先写一个自己的加密协议,利用MD5不断的重复加密,在加密过程中使用我们的规则进行打乱,得到密文存入数据库。

如何得到用户密码?

得不到。

如何校验用户密码是否正确?

用户输入密码递交表单,将数据传递到服务器,经过我们的加密得到的数值等于数据库存放的数据,密码正确,否则错误。

标签: MD5加密, WEB安全

添加新评论