Java中的加解密之MD5加点盐(保护客户密码)

 

Java中的加解密之MD5加点盐(保护客户密码)

大多情况下我们加密的密码都是md5+Base64方式存储密码,这种存储方式 简单方便而且由于MD5算法的几乎不可还原性,但是假如网站的数据库遭到泄漏,得到了一串加密后的密码

比如

"123456"通过MD5+Base64编码后,永远是"4QrcOUm6Wau+VuBX8g+IPg=="

攻击者就可以用一个SQL命令:

  1. select * from users where password='4QrcOUm6Wau+VuBX8g+IPg=='

这样就可以查出多少个人在用这个密码。

但是还有种情况就是用猜的方法就可以知道你的密码到底是什么,其他密码通过MD5+Base64编码加密也是一成不变的,总有简单的密码会给猜出。

为了防止这种情况我们可以选择密码+盐(这里盐的意思是随机生成固定长度的字符串)然后在加密,这样获得的字符串就永远不一样了!

所以要学会这种方式。

一种方式是随即数,但是我更喜欢用UUID,听说永远不会相同。

 

实际操作

  1.  UUID uuid = UUID.randomUUID();
  2. String user_activation=uuid.toString();
  3. String uuidPass=user_activation+password;
  4. 在把uuidpass通过MD5+Base64编码加密存入数据库, 当然 uuid必须要保存到数据库不然你无法验证密码。
  5. 这里只是写了简单的过程参考,不要直接复制。

这样就是加盐的方式,你也可以使用随机数的方式。

其他方式不说了,大同小异。

 

这样数据库万一泄露你也别担心那串密码会不会给破解了。

因为就算一样的密码那串加密的密码都是不一样的。

很多大公司还明文存入,九成网民的密码早就给泄漏了~

 

总结一句  也许很多伙伴到现在还不明白我说的,用户在互联网的密码几乎都是一样的,一个被破解了那所有平台的密码几乎都破解了。

腾讯云服务器安全可靠高性能,多种配置供您选择
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: