为什么不能直接用MD5?
直接对重要数据进行MD5处理后,反响解密确实难度很大,但还是可以找到破绽的。例如:两个人或多个人的密码相同,通过MD5加密后保存会得到相同的结果,这样破解一个就破解一片的密码。如果一个名XX的用户可以查看数据库,那么他就可以观察到自己的密码和别人的密码加密后的结果一样,就可以利用别人的身份登陆了。
如何防止这种情况发生呢?
MD5加盐。就是在MD5加密后的密码的基础上加入其他成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。
盐可以是用户名、用户注册时的邮件、注册时间等非空信息(如果是空信息这个盐处理会失效)。
因为密码是MD5处理的密码加用户名,因为用户名都不相同,所以即使密码相同的用户,保存到数据库中密码也是不相同的。
MD5加盐:MD5处理后的密码加上被MD5处理后的盐密码。