网站密码的保存大致经历了 明文——md5——md5(salt)——多重认证。
明文:顾名思义,就是我们能看懂的密码。比如csdn泄露的600w密码。
密文:明文经过加密得到的。
密钥:明文变成密文的函数。
MD5:常用的摘要算法,理论上是不可逆算法。严格来说不算加密算法,只是摘要,是单向散列。
salt:简单理解是重复明文+随机字符 md5加密,增加不可逆程度。
暴力破解md5:md5算法不可逆,但是可以把已知明文批量生成散列,然后用别人的md5密文跟生成散列碰撞,散列一样的明文一样。
彩虹表:这玩意比较抽象,打个比方,md5散列是一把锁,暴力破解是做了能开这把锁的所有钥匙,然后挨个试哪个能开。而彩虹表是把差不多的钥匙(至少能插进锁的那些)分组,然后再从分组里面分组,减少插钥匙时间,提高效率。
关于彩虹表 知乎的回答不错:
http://www.zhihu.com/question/19790488有些奇葩网站泄露的密码是明文的,不需要破解。
大部分是md5认证的,各种破解软件、网站、彩虹表的诞生,md5几乎等同明文。
部分是有salt的,比如dz论坛默认是md5(md5($pass).$salt),拖库时基本md5和salt以及算法都泄露了。解密只是时间问题。
其他加密方式,在常用密码明文大量泄露环境下,任何加密方式都显得鸡肋。
比较好的解决方案可以多重认证,比如广泛使用的 密码登陆的同时需要手机验证码。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/153243
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.