MAC算法集合了MD和SHA两大系列消息摘要算法。MD系列有HmacMD2、HmacMD4、HmacMD5三种算法。SHA系列的有HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512这五种算法。MAC算法摘要值的长度与具体的摘要算法的长度一直。
如HmacMD5即使对应MD5算法的摘要值长度128位。具体如下:
MAC算法的实现
1、Java 自带类实现
注意:Java自动类仅支持HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384、HmacSHA512这几种算法
Mac算法是带有密钥的消息摘要算法,所以其实现分两步
1)创建密钥
2)获得消息摘要
具体实现代码如下:
/**
*1、创建密钥
*/
//创建对应摘要算法(如MD5SHA1SHA256等)密钥生成器对象KeyGenerator
KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5");
//产生密钥
SecretKey secretKey = keyGenerator.generateKey();
//得到密钥的字节数组
//byte[] key = secretKey.getEncoded();
/**
* 2、根据密钥产生mac摘要
*/
//创建对应摘要算法(如MD5SHA1SHA256等)的Mac实例对象
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
//初始化该mac实例对象的密钥
mac.init(secretKey);
//获取mac摘要信息
byte[]result = mac.doFinal("中国".getBytes());
System.out.println(toHexString(result)); |