网站密码的保存大致经历了 明文——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以及算法都泄露了。解密只是时间问题。
其他加密方式,在常用密码明文大量泄露环境下,任何加密方式都显得鸡肋。
比较好的解决方案可以多重认证,比如广泛使用的 密码登陆的同时需要手机验证码。
明文:顾名思义,就是我们能看懂的密码。比如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以及算法都泄露了。解密只是时间问题。
其他加密方式,在常用密码明文大量泄露环境下,任何加密方式都显得鸡肋。
比较好的解决方案可以多重认证,比如广泛使用的 密码登陆的同时需要手机验证码。