大多情况下我们加密的密码都是md5+Base64方式存储密码,这种存储方式 简单方便而且由于MD5算法的几乎不可还原性,但是假如网站的数据库遭到泄漏,得到了一串加密后的密码
比如
"123456"通过MD5+Base64编码后,永远是"4QrcOUm6Wau+VuBX8g+IPg=="
攻击者就可以用一个SQL命令:
select * from users where password='4QrcOUm6Wau+VuBX8g+IPg=='
这样就可以查出多少个人在用这个密码。
但是还有种情况就是用猜的方法就可以知道你的密码到底是什么,其他密码通过MD5+Base64编码加密也是一成不变的,总有简单的密码会给猜出。
为了防止这种情况我们可以选择密码+盐(这里盐的意思是随机生成固定长度的字符串)然后在加密,这样获得的字符串就永远不一样了!
所以要学会这种方式。
一种方式是随即数,但是我更喜欢用UUID,听说永远不会相同。
实际操作
UUID uuid = UUID.randomUUID();
String user_activation=uuid.toString();
String uuidPass=user_activation+password;
在把uuidpass通过MD5+Base64编码加密存入数据库, 当然 uuid必须要保存到数据库不然你无法验证密码。
这里只是写了简单的过程参考,不要直接复制。
这样就是加盐的方式,你也可以使用随机数的方式。
其他方式不说了,大同小异。
这样数据库万一泄露你也别担心那串密码会不会给破解了。
因为就算一样的密码那串加密的密码都是不一样的。
很多大公司还明文存入,九成网民的密码早就给泄漏了~
总结一句 也许很多伙伴到现在还不明白我说的,用户在互联网的密码几乎都是一样的,一个被破解了那所有平台的密码几乎都破解了。