MD5不可逆的加密

235 阅读1分钟

闲聊两句MD5加密吧.多数的网站在记录用户密码时都不会存储明文密码,而是通过MD5,SHA1等不可逆的算法,将密码加密然后存储起来.这样即使数据库被窃取,密码也不会被人拿到.

说到这,必须要声明一下,所有的不可逆加密都不是为了防止在客户端暴力破解.而是防止黑客拿到密文后反推明文.例如,黑客有一张表(彩虹表),里边存储了大量常用密码和常用密码MD5后的

密文.如果黑客攻破了数据库,拿到了密文可以轻而易举的到彩虹表中对比,获取明文密码.所以只把明文MD5是不够的.一般的不直接对明文密码进行MD5而是生成一个随机串(盐)+密码然后在MD5加密

最终将密文和盐分别存到不同的表中.这样,即使黑客拿到了用户密码表,如果没有拿到盐表,也无法反推明文.但若是两个表都拿到了,他们就可以将彩虹表的密码+盐重新生成密码表,这样也

可以反推密码.所以更安全的做法是,对盐和密码MD5后得到的密文再进行N次的MD5这样得到的密文存储数据库.黑客不知道到底MD5了几次,就无法反推明文了.