直接对重要数据进行MD5处理后,反向解密确实难度很大,但还是可以找出破绽的
密码相同的数据,数据库里的值是相同的
那么我们以前的加密方法是否对这种行为失效了呢?其实只要稍微混淆一下就能防范住了,这在加密术语中称为“加盐”。具体来说就是在原有材料(用户自定义密 码)中加入其它成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。 下面请见代码:
1 | // 对密码进行加盐后加密,加密后再通过Hibernate往数据库里存 |
就是这样简单,上面代码中盐就是用户名,可以的话还可以用用户注册时的邮件,注册时间等非空信息(如果是空信息这个加盐处理会失效)。
1 | $salt='123abc'; //6位随机数,也存储在数据库 |