加密方式有哪些(信息加密方式)
密码加密的方式如下:1。以明文保存;2.对称加密算法保存;3.MD5、SHA1等单向HASH算法;4.PBKDF2算法;5.bcrypt、scrypt等算法。
用户密码加密方法
将用户密码保存到数据库时,有哪些常用的加密方法?以下是保存密码的常用方法:
1.明文保存
比如用户设置的密码是“123456”,直接在数据库中保存“123456”是最简单最不安全的方式。但事实上,很多互联网公司可能会采用这种方式。
2.对称加密算法保存
比如3DES、AES等算法都可以通过解密来还原原密码,但前提是要获得密钥。然而,由于大量的用户信息已经被泄露,密钥也可能被泄露。当然,一般数据和密钥可以分开存储和管理,但是完全保护密钥也是一件非常复杂的事情,所以这种方式不是一个很好的方式。
3.MD5、SHA1和其他单向哈希算法
使用这些算法后,原密码无法通过计算还原,实现相对简单。所以很多互联网公司用这种方式保存用户密码,以前是比较安全的方式。但是随着彩虹表技术的兴起,彩虹表可以搭建起来查表破解。目前这种方式很不安全。
其实这种MD5加密方式之前是公司采用的。
4.PBKDF2算法
这个算法的原理大致相当于在HASH算法的基础上加入随机盐,进行多次HASH运算。随机盐大大增加了构建彩虹表的难度,而多重哈希也大大增加了构建和破解彩虹表的难度。
使用PBKDF2算法时,HASH一般用sha1或sha256,随机salt长度一般不小于8字节,HASH次数至少要1000次,这样安全性足够高。在一个密码验证过程中,HASH操作被执行1000次,对于服务器来说可能只需要1毫秒,但是对于破解者来说,计算成本增加了1000倍。至少8字节的随机盐增加了N个数量级的建表难度,使得大批量破解密码几乎不可能。这个算法也是美国国家标准技术研究所推荐的。
5.bcrypt、scrypt和其他算法
这两种算法也能有效抵抗彩虹表,在使用这两种算法时需要指定相应的参数,使得破解更加困难。
在密码学中,scrypt(发音为“ess crypt”)是科林·珀西瓦尔(Colin Percival)在2009年发明的密钥派生函数,最初是为他创建的Tarsnap服务设计的。设计中考虑了大规模定制硬件攻击,刻意设计需要大量内存操作。
Scrypt不仅计算时间长,而且占用大量内存,使得并行计算多个摘要极其困难,因此使用彩虹表进行暴力攻击更加困难。Scrypt在生产环境中应用不广泛,缺乏细致的检查和广泛的函数库支持。但只要Scrypt在算法层面没有瑕疵,其安全性应该比PBKDF2和bcrypt高。
总结
PBKDF2、bcrypt、scrypt等算法可以有效抵抗彩虹表攻击。即使数据被泄露,最关键的“用户密码”仍然可以得到有效保护,黑客也无法大量破解用户密码,从而切断了数据库冲突和数字扫描的根本原因。