消息摘要算法——MD5,SHA,MAC

IT知识
554
0
0
2022-04-23

消息摘要算法:防止消息在传递过程中被篡改。

主要有三种常用的:

MD:message Digest 消息摘要

SHA: Secure Hash Algorithm 安全散列算法

Mac:message Authentication code 信息认证码

原理:任何消息经过消息摘要算法后,都会产生唯一的散列值(即“数据指纹”)(同一段消息无论经过多少次相同的消息摘要算法加密,结果都相同),所以如果消息在传送过程中被修改,那么算出来的数据指纹也与原本的消息算出来的不同了,如果没有被修改,则数据指纹是相同的。

特点:单向性(即只有加密,没有解密)

MD5(算法已被破解)

实现方式:

  • Commons Codec(“CC”,推荐:封装了JDK的底层代码,并且提供了二进制字节数组向十六进制转化的方法)
  • JDK(没有提供二进制字节数组向十六进制转化的方法,想要进行转化,需要借助BC或者CC)
  • Bouncy Castle(“BC”,不推荐,实现比较复杂,这里就忽略不在描述)

导入依赖:

消息摘要算法——MD5,SHA,MAC

加密方法:

消息摘要算法——MD5,SHA,MAC

SHA:原理:消息摘要长度(可以定量为加密后的字符串的长度)越长,安全性越高

  • MD5:128位二进制摘要(32位16进制字符串)(已破解)
  • SHA1:160位二进制摘要(40位16进制字符串)(已破解)
  • SHA256:256位二进制摘要(64位16进制字符串)(常用,在spring security中也有使用到)

消息摘要算法——MD5,SHA,MAC

mac(又称为Hmac):原理:在md与sha系列算法的基础上加入了密钥,是三大常用的消息摘要算法中最安全的一个

常用的mac算法:

  • HmacMD5
  • HmacSHA1

HmacSHA256

消息摘要算法——MD5,SHA,MAC

消息摘要算法——MD5,SHA,MAC

这三种方式都是得到指定信息的信息摘要,只不过加密的方式是越来越复杂了,越来越难破解了,像MD5和SHA1据说已经被破解了,所以想要最安全的话推荐使用最后一种HmacSHA256或者更长的都行

消息摘要算法——MD5,SHA,MAC