明文密码
我接触最早的密码是明文密码,存库。当时还美滋滋的觉得有个密码真好。 可是当著名的csdn密码泄漏事件发生后,我真的惊呆了。原来密码可以泄漏,当然不良份子会偷窥密码,程序员也保不齐泄漏密码。真是得防贼防闺蜜。 既然明文密码可能会被偷窥,那就给密码加个密。
密码加密
最开始我们用hash(pwd)的方式生成密码,最常见的是MD5加密。但是后来有坏人居然也可能破解。大概有这3种方式。
- 暴力破解
- 字典
- 彩虹表
有一个网站貌似就能破解md5字符串,cmd5.com,我试了几个比较简单的纯数(123、18701114等)字密码,可以破解,再复杂的md5需要付费,就没试。
既然简单的hash(密码)能被破解,那就让密码再复杂一点,hash(pwd+salt)给密码加个盐。盐简单理解就是一串自定义的字符串,盐的几种实现:
- 固定的盐,系统只有一个盐,这样其实没有太多改观,只要破解几个密码,就知道盐是什么。
- 随机盐,盐是随机数,这样安全性提高,但是加密容易,校验难了。不知道当时的随机数是什么。得把这个随机数藏起来。比如藏到hash(密码)中,取其中几位。也可以是用户名,id,手机号,身份证等,反正得是用户的唯一键。
这样保不齐也会被破解,那就多加几次密,hash(hash(明文+随机盐)+随即盐)* n ,就是Bcrypt加密。
当然没有什么密码是绝对安全的,未来有了量子计算机,现在的什么密码都是小菜一碟。到那时候就用量子加密吧,道高一尺魔高一丈。当然也可以多重认证,人机认证,再一些敏感操作加一些风控。
就简单介绍到这里吧,期望小伙伴批评指正。