一、DES 对称加密
DES 双向对称加密:key 为加密秘钥,data 为加密数据,mode 为加解密模式
key共8个字节64位,其中有56位用于加密公钥
- 加密时:用 key 对 data 加密,生成密码形式的 data 作为输出结果
- 解密时:用 key 对 data 进行解密获得原文密码作为输出
特点:
- 对称加密算法,发送方接受方必须持有相同的秘钥才能加解密
- 秘钥较短,加密速度快,加密处理简单,适用于加密大量数据的场合
- 加密算法是公布的,但是秘钥是未知的
- 虽有极高的安全性,加密公钥只有56位,随便技术发展,秘钥长度较短存在被破解的可能性
二、MD5 单向加密
MD5 单向加密:可以将输入的信息加密转换为 128 位固定长度的散列值,用于检验数据传输过程中的完整性
- 填充:将输入信息进行512求余分组,若不等于448,那么进行填充 1 和0,一个1 N个0。最后的数据就为N*512+448
- 记录信息长度:将得到的信息用64位存储填充之前的信息长度,这样448+64=512,总信息为N+1个512
- 以四个常数ABCD与每组512位进行函数运算,最后输出的结果就是4组32位的常数。拼接得到MD5码
MD5 的优势:
- 防止被篡改,在传输过程中一旦被串改,那么计算出的MD5值一定不同
- 计算速度快,加密速度快,不需要秘钥。
- 防止看到明文,公司存放密码存放的是MD5值
MD5 的缺点:
- 存在两种不同数据发生碰撞的可能性
MD5的安全性:将用户的密码直接MD5后存储在数据库是不安全的。第一,用户普遍习惯用容易记忆的密码,生日,手机号等,黑客容易破译此类密码。这也是加盐值的一个原因。第二,直接MD5存入数据库,若数据库被破解,通过MD5反查会查到密码,需要随机盐值的配合。
考虑到多数人所使用的密码为常见的组合,攻击者可以将所有密码的常见组合进行单向哈希,得到一个摘要组合,然后与数据库中的摘要进行比对即可获得对应的密码。这个摘要组合也被称为rainbow table
一、murmurHash3 算法
二、sipHash 算法
三、md5 与 hmacMd5 算法
四、sha 与 hmacSha 算法
五、ccr32 与 ccr32c 算法
六、adler32 算法