MAC算法结合了MD5和SHA算法的优势, 并加入了密钥的支持, 是一种更为安全的消息摘要算法.
1. 环境
jdk1.6
commons-codec-1.4.jar
2. 代码
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
public class MACCipher {
public static byte[] initHmacMD5Key() throws Exception{
// 初始化KeyGenerator
KeyGenerator kg = KeyGenerator.getInstance("HmacMD5");
//产生密钥
SecretKey secretKey = kg.generateKey();
//获得密钥
return secretKey.getEncoded();
}
public static byte[] encodeHmacMD5(byte[] data, byte[] key)throws Exception{
// 还原密钥
SecretKey secretKey = new SecretKeySpec(key, "HmacMD5");
// 实例化Mac
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
// 初始化Mac
mac.init(secretKey);
// 执行消息摘要
return mac.doFinal(data);
}
public static String hmacmd5Hex(byte[] data, byte[] key)throws Exception{
return Hex.encodeHexString(encodeHmacMD5(data, key));
}
public static byte[] initHmacSHA512Key()throws Exception{
// 初始化KeyGenerator
KeyGenerator kg = KeyGenerator.getInstance("HmacSHA512");
//产生密钥
SecretKey secretKey = kg.generateKey();
//获得密钥
return secretKey.getEncoded();
}
public static byte[] encodeHmacSHA512(byte[] data, byte[] key)throws Exception{
// 还原密钥
SecretKey secretKey = new SecretKeySpec(key, "HmacSHA512");
// 实例化Mac
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
// 初始化Mac
mac.init(secretKey);
// 执行消息摘要
return mac.doFinal(data);
}
public static String hmacsha512Hex(byte[] data, byte[] key)throws Exception{
return Hex.encodeHexString(encodeHmacSHA512(data, key));
}
}
3. 测试代码
String macmd5Data = MACCipher.hmacmd5Hex("HmacMD5编码".getBytes(), MACCipher.initHmacMD5Key());
System.out.println(macmd5Data);
String macsha512Data = MACCipher.hmacsha512Hex("HmacSHA512编码".getBytes(), MACCipher.initHmacSHA512Key());
System.out.println(macsha512Data);
分享到:
相关推荐
fpexpress是一款用于计算、验证消息摘要的工具, 其设计目标是为您提供可靠、便捷的服务和良好的用户体验, 希望能为您提供些许方便并能得到您的认可. 以下列举其主要特性, 以期使您对其有基本了解. 01.多平台运行: ...
fpexpress™是一款用于计算、验证消息摘要的工具, 其设计目标是为您提供可靠、便捷的服务和良好的用户体验, 希望能为您提供些许方便并能得到您的认可. 以下列举其主要特性, 以期使您对其有基本了解. 01.多平台运行:...
fpexpress™是一款用于计算、验证消息摘要的工具, 其设计目标是为您提供可靠、便捷的服务和良好的用户体验, 希望能为您提供些许方便并能得到您的认可. 以下列举其主要特性, 以期使您对其有基本了解. 01.多平台运行:...
fpexpress™是一款用于计算、验证消息摘要的工具, 其设计目标是为您提供可靠、便捷的服务和良好的用户体验, 希望能为您提供些许方便并能得到您的认可. 以下列举其主要特性, 以期使您对其有基本了解. 01.多平台运行:...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
本文详解了Java中消息摘要算法MAC(Message Authentication Code)的实现方法,这是消息摘要算法的第三种实现方式,前两种分别是MD2、MD4、MD5以及SHA系列算法。消息摘要算法主要用于确保信息传输完整性和认证,MAC...
Java 消息摘要算法 MAC 实现与应用完整示例 Java 消息摘要算法 MAC(Message Authentication Code)是一种用于数据完整性和身份验证的算法。它可以确保数据的完整性和一致性,防止数据被篡改或伪造。 概念: * ...
MAC算法之消息摘要算法HmacMD5的实现 MAC(Message Authentication Code,消息验证码)算法是一种常用的消息认证机制,它可以确保消息的完整性和真实性。在实际应用中,MAC算法通常与加密算法结合使用,以确保消息...
这个HMAC码可以用于验证消息的完整性,其原理也很简单,就是一种加入了密钥的消息摘要,相比起MAC更加安全。JWT(JSON Web Token)中第三部分的消息摘要就是使用了HMAC。 HMAC(Hash-based Message Authentication ...
常用的消息摘要算法包括 MD、SHA 和 MAC。MD5 和 SHA1 是最有代表性的算法,但 MD5 已经被发现有漏洞,不再安全。SHA 算法比 MD 算法的摘要长度更长,也更加安全。 下面是一个使用 MD5 和 SHA 消息摘要的示例代码:...
MAC是通过一个密钥和一个消息来生成固定长度的摘要,这个摘要与原始消息绑定,使得任何对消息的修改在计算新的MAC时都会被发现。在本文中,我们将深入探讨DES-MAC的工作原理、特点以及其在实际应用中的重要性。 **...
消息认证码(Message Authentication Code,MAC)是一种用于验证数据完整性和来源的机制,它是通过一个密钥和哈希函数生成的固定长度的摘要。MAC与普通的哈希函数不同,因为它需要共享的密钥,这使得只有拥有正确...
数字签名需要对原始信息进行散列处理,生成一个消息摘要,然后使用发送者的私钥对这个消息摘要进行加密,生成签名。接收方可以使用发送者的公钥对签名进行解密,同时对接收的信息进行散列处理,生成另一个消息摘要。...
* 使用哈希函数生成消息摘要 * 使用数字签名技术 数字签名是指使用加密技术来确保消息的来源和完整性。数字签名可以使用公钥密钥对来生成和验证。数字签名的优点包括: * 确定消息来源 * 确定消息完整性 * 保证...
本文主要探讨了数字签名、消息认证以及相关的加密技术,包括对称加密、非对称加密、消息摘要、MAC等,旨在解决数据安全传输中的四个关键问题:数据的安全性、完整性、真实性和不可否认性。 1. 数据加密:对称加密如...
它通过将一个密钥与消息结合,生成一个固定长度的摘要,这个摘要称为MAC值。MAC算法通常用于网络通信、文件完整性检查以及数据库保护等领域,确保信息在传输过程中没有被篡改或伪造。 在提供的"MAC算法小工具"中,...
MAC是由一个密钥和任意长度的消息共同计算出的一个固定长度的摘要。这种机制可以确保只有拥有正确密钥的人才能生成有效的MAC,从而防止中间人攻击和数据篡改。常见的MAC算法有HMAC(基于哈希的MAC)、CMAC(基于块...
例如,消息摘要和哈希函数在保证数据的完整性上发挥着核心作用,而MAC则在双向通信中提供数据认证。掌握这些技术有助于构建安全、可靠的软件系统。同时,随着安全威胁的不断变化,开发者需要持续关注新的安全技术...
它们将任意长度的消息压缩成固定长度的摘要,这些摘要具有单向性和碰撞抵抗性,即很难找到两个不同的消息产生相同的散列值。然而,尽管MD5在过去的安全性较高,但现在已经存在已知的碰撞攻击,因此不应再用于安全性...