MAC(Message Authentication Code 消息谁码算法)
MAC算法结合了MD5和SHA算法的优势, 并加入了密钥的支持, 是一种更为安全的消息摘要算法
1 环境
jdk16
commons-codec-14jar
2 代码
import javaxcryptoKeyGenerator;
import javaxcryptoMac;
import javaxcryptoSecretKey;
import javaxcryptospecSecretKeySpec;
import orgapachecommonscodecbinaryHex;
public class MACCipher {
public static byte[] initHmacMD5Key() throws Exception{
// 初始化KeyGenerator
KeyGenerator kg = KeyGeneratorgetInstance("HmacMD5");
//产生密钥
SecretKey secretKey = kggenerateKey();
//获得密钥
return secretKeygetEncoded();
}
public static byte[] encodeHmacMD5(byte[] data, byte[] key)throws Exception{
// 还原密钥
SecretKey secretKey = new SecretKeySpec(key, "HmacMD5");
// 实例化Mac
Mac mac = MacgetInstance(secretKeygetAlgorithm());
// 初始化Mac
macinit(secretKey);
// 执行消息摘要
return macdoFinal(data);
}
public static String hmacmd5Hex(byte[] data, byte[] key)throws Exception{
return HexencodeHexString(encodeHmacMD5(data, key));
}
public static byte[] initHmacSHA512Key()throws Exception{
// 初始化KeyGenerator
KeyGenerator kg = KeyGeneratorgetInstance("HmacSHA512");
//产生密钥
SecretKey secretKey = kggenerateKey();
//获得密钥
return secretKeygetEncoded();
}
public static byte[] encodeHmacSHA512(byte[] data, byte[] key)throws Exception{
// 还原密钥
SecretKey secretKey = new SecretKeySpec(key, "HmacSHA512");
// 实例化Mac
Mac mac = MacgetInstance(secretKeygetAlgorithm());
// 初始化Mac
macinit(secretKey);
// 执行消息摘要
return macdoFinal(data);
}
public static String hmacsha512Hex(byte[] data, byte[] key)throws Exception{
return HexencodeHexString(encodeHmacSHA512(data, key));
}
}
3 测试代码
String macmd5Data = MACCipherhmacmd5Hex("HmacMD5编码"getBytes(), MACCipherinitHmacMD5Key());
Systemoutprintln(macmd5Data);
String macsha512Data = MACCipherhmacsha512Hex("HmacSHA512编码"getBytes(), MACCipherinitHmacSHA512Key());
Systemoutprintln(macsha512Data);
以上就是关于MACs是什么意思,前提是和密码学相关的全部的内容,包括:MACs是什么意思,前提是和密码学相关的、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:优选云
评论列表(0条)