一、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 算法