`
yuancihang
  • 浏览: 142619 次
  • 性别: Icon_minigender_1
  • 来自: 洛阳
社区版块
存档分类
最新评论

MAC消息摘要

阅读更多

   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消息摘要工具(Mac OS X版)

    fpexpress是一款用于计算、验证消息摘要的工具, 其设计目标是为您提供可靠、便捷的服务和良好的用户体验, 希望能为您提供些许方便并能得到您的认可. 以下列举其主要特性, 以期使您对其有基本了解. 01.多平台运行: ...

    fpexpress消息摘要工具(Windows版)

    fpexpress™是一款用于计算、验证消息摘要的工具, 其设计目标是为您提供可靠、便捷的服务和良好的用户体验, 希望能为您提供些许方便并能得到您的认可. 以下列举其主要特性, 以期使您对其有基本了解. 01.多平台运行:...

    fpexpress消息摘要工具(Linux-rpm版)

    fpexpress™是一款用于计算、验证消息摘要的工具, 其设计目标是为您提供可靠、便捷的服务和良好的用户体验, 希望能为您提供些许方便并能得到您的认可. 以下列举其主要特性, 以期使您对其有基本了解. 01.多平台运行:...

    fpexpress消息摘要工具(Linux-deb版)

    fpexpress™是一款用于计算、验证消息摘要的工具, 其设计目标是为您提供可靠、便捷的服务和良好的用户体验, 希望能为您提供些许方便并能得到您的认可. 以下列举其主要特性, 以期使您对其有基本了解. 01.多平台运行:...

    java加密算法:Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法

    java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...

    Java消息摘要算法MAC实现与应用完整示例

    主要介绍了Java消息摘要算法MAC实现与应用,结合完整实例形式分析了java消息摘要算法MAC的概念、原理、实现方法及相关操作注意事项,需要的朋友可以参考下

    hmac模块生成加入了密钥的消息摘要详解

    这个HMAC码可以用于验证消息的完整性,其原理也很简单,就是一种加入了密钥的消息摘要,相比起MAC更加安全。JWT(JSON Web Token)中第三部分的消息摘要就是使用了HMAC。 HMAC(Hash-based Message Authentication ...

    Java加密 消息摘要算法MAC实现详解

    主要介绍了Java 消息摘要算法MAC实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    MAC算法之消息摘要算法HmacMD5的实现

    主要介绍了MAC算法之消息摘要算法HmacMD5的实现的相关资料,这里提供实例,帮助大家学习理解这部分知识,需要的朋友可以参考下

    Java加密和数字签名编程快速入门

    主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1,jdk1.5对上面都提供了支持,在java中进行消息摘要很简单, java.security....

    Python内置模块hashlib、hmac与uuid用法分析

    md5和sha算法通过消息摘要算法生成定长的消息摘要,消息摘要算法是不可逆的。但同一段消息通过摘要算法后得到的值是一样的,可一通过比对消息摘要验证数据的完整性。 sha算法比MD5算法安全,但所需的时间也稍长。 1...

    digest.js:适用于现代Web浏览器的Javascript中的加密摘要,HMAC和基于密码的密钥派生算法

    摘要.js已成功使用以下Web浏览器进行了测试: 镀Chrome11 Firefox 4 的Safari 5.1 IE 10支持的算法: 消化MD5 SHA-1 SHA-256 消息验证码(MAC) HMAC / MD5 HMAC / SHA-1 HMAC / SHA-256 基于密码的密钥派生功能...

    Java加密与解密的艺术配书源代码

    第5章电子邮件传输算法—Base64 134 5.1 Base64算法的由来134 5.2 Base64算法的定义134 5.3 Base64算法与加密算法的关系135 5.4 ...MAC算法家族181 6.5 其他消息摘要算法195 6.6 循环冗余校验算法—CRC算法206 6.7 实例...

    Java加密与解密的艺术

    可以攻玉1094.1 加固你的系统1094.2 加密组件Bouncy Castle 1114.3 辅助工具Commons Codec 1204.4 小结121第二部分实践篇第5章电子...MAC算法家族1816.5 其他消息摘要算法1956.6 循环冗余校验算法—CRC算法2066.7 实例...

    用于VANET紧急消息传输的改进二元分割广播协议

    摘要:针对车辆自组织网络(vehicular Ad Hoc network,VANET)中紧急消息的传输,提出一个改进的二元分割广播(MBPAB)协议。协议将通信范围迭代划分成小的区域,寻找离发送节点最远区域内的车辆,对紧急消息执行...

    网络安全复习.docx

    用户将数字证书中岀最后一个字段以外的所有字段输入消息摘要算法 由消息摘要算法计算数字证书中除最后一个字段外其他字段的消息摘 要,设该消息摘要为MD-1 用户从证书中取出CA的数字签名 用户用CA的公钥对CA的数字签...

    Java 2平台安全技术-结构,API设计和实现

    7.5.1 实例1:计算消息摘要 132 7.5.2 实例2:产生公钥/私钥对 133 7.5.3 实例3:产生并且验证签名 134 7.5.4 实例4:读取包含证书的文件 135 7.6 标准名 136 7.6.1 消息摘要算法 136 7.6.2 密钥和参数算法 136 7.6.3 ...

    ToolsFx密码学工具箱-Java语言编写,是爬虫工程师的好用工具

    消息摘要算法: RSA-MD4、RSA-MD5、RSA-MDC2、RSA-RIPEMD160 RSA-SHA1、RSA-SHA1-2、RSA-SHA224、RSA-SHA256 RSA-SHA384、RSA-SHA512、BLAKE2B512、MD4、MD5、MD5-SHA1、 MDC2、MDC2WITHRSA、SHA1、SHA224 、SHA256...

    JAVA 2平台安全技术-结构,API设计和实现

    7.5.1 实例1:计算消息摘要 132 7.5.2 实例2:产生公钥/私钥对 133 7.5.3 实例3:产生并且验证签名 134 7.5.4 实例4:读取包含证书的文件 135 7.6 标准名 136 7.6.1 消息摘要算法 136 7.6.2 密钥和参数算法 136 7.6.3 ...

    ios-鹏哥哥算法加密.zip

    6、 HMAC加密消息摘要算法 我们通常在遇到的时候会看到“HMAC”字眼,mac(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥。因此MAC算法...

Global site tag (gtag.js) - Google Analytics