Md5加密
MD5是一种被广泛使用的线性散列算法,可以产生出一个128位(16字节)的散列值
(hashvalue),用于确保信息传输完整一致。
MD5加密之后产生的是一个固定长度(32位或16位)的数据
MD5是可以进行反向暴力破解的。也就是用很多不同的数据进行加密后跟已有的加密数
据进行对比。理论上只要数据量足够庞大MD5是可以被破解的
MD5考虑的是破解的成本(时间和机器性能)。假设破解当前的MD5密码需要目前计
算能力最优秀的计算机工作100年才能破解完成。那么当前的MD5密码就是安全的。
增加破解成本的方法(方法很多,这里只说我常用的)。
1.使用一段无意义且随机的私匙进行MD5加密会生成一个加密串,我们暂且称之为串1
2.将要加密的的数据跟串1拼接,再进行一次MD5,这时会生成串2
3.将串2再次进行MD5加密,这时生成的串3就是我们加密后的数据。
解密。MD5不存在解密。只能把数据进行相同的MD5处理之后跟之前的的加密串进行
对比。
我们在注册账号时的密码一般都是用的MD5加密。
js中使用MD5
MD5的优点:计算速度快,加密速度快,不需要密钥;可以检查文件的完整性,一旦文
件被更改,MD5值会改变;防止被篡改,传输中一旦被篡改,计算出的MD5值
也会改变;防止看到明文,公司存放密码存放的是MD5值。
MD5的缺点:作为散列算法,经过证实,仍然会存在两种不同数据会发生碰撞;MD5
的安全性。将用户的密码直接MD5后存储在数据库中是不安全的。很多人使用的
密码是常见的组合,攻击者将这些密码的常见组合进行单向哈希,得到一个摘要组
合,然后与数据库中的摘要进行比对即可获得对应的密码。