消息认证码算法简介
在密码学中,消息认证码(英语:Message authentication code,缩写为MAC),又译为消息鉴别码、文件消息认证码、讯息鉴别码、信息认证码,是经过特定算法后产生的一小段信息,检查某段消息的完整性,以及作身份验证。它可以用来检查在消息传递过程中,其内容是否被更改过,不管更改的原因是来自意外或是蓄意攻击。同时可以作为消息来源的身份验证,确认消息的来源。
消息认证码的算法中,通常会使用使用带密钥的散列函数,或者块密码的带认证工作模式(如CBC)。
信息鉴别码不能提供对信息的保密,若要同时实现保密认证,同时需要对信息进行加密。
消息认证码算法实现
在Java中支持的消息摘要算法有:HmacMD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512等。
package com.jianggujin.codec;
import java.security.InvalidKeyException;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
/**
* 消息认证码(Message Authentication Code,MAC)算法
*
* @author jianggujin
*
*/
public class HQMac
{
private static HQMac mac = new HQMac();
public static HQMac getInstance()
{
return mac;
}
private HQMac()
{
}
/**
* Mac算法
*
* @author jianggujin
*
*/
public static enum HQMacAlgorithm
{
HmacMD5("HmacMD5"), HmacSHA1("HmacSHA1"), HmacSHA224("HmacSHA224"), HmacSHA256("HmacSHA256"), HmacSHA384(
"HmacSHA384"), HmacSHA512("HmacSHA512");
private String name;
private HQMacAlgorithm(String name)
{
this.name = name;
}
public String getName()
{
return this.name;