`
yuancihang
  • 浏览: 145172 次
  • 性别: 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(Message Authentication Code)的实现方法,这是消息摘要算法的第三种实现方式,前两种分别是MD2、MD4、MD5以及SHA系列算法。消息摘要算法主要用于确保信息传输完整性和认证,MAC...

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

    Java 消息摘要算法 MAC 实现与应用完整示例 Java 消息摘要算法 MAC(Message Authentication Code)是一种用于数据完整性和身份验证的算法。它可以确保数据的完整性和一致性,防止数据被篡改或伪造。 概念: * ...

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

    MAC算法之消息摘要算法HmacMD5的实现 MAC(Message Authentication Code,消息验证码)算法是一种常用的消息认证机制,它可以确保消息的完整性和真实性。在实际应用中,MAC算法通常与加密算法结合使用,以确保消息...

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

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

    浅析java消息摘要与数字签名

    常用的消息摘要算法包括 MD、SHA 和 MAC。MD5 和 SHA1 是最有代表性的算法,但 MD5 已经被发现有漏洞,不再安全。SHA 算法比 MD 算法的摘要长度更长,也更加安全。 下面是一个使用 MD5 和 SHA 消息摘要的示例代码:...

    基于DES的MAC

    MAC是通过一个密钥和一个消息来生成固定长度的摘要,这个摘要与原始消息绑定,使得任何对消息的修改在计算新的MAC时都会被发现。在本文中,我们将深入探讨DES-MAC的工作原理、特点以及其在实际应用中的重要性。 **...

    AES加密算法以及MAC生成

    消息认证码(Message Authentication Code,MAC)是一种用于验证数据完整性和来源的机制,它是通过一个密钥和哈希函数生成的固定长度的摘要。MAC与普通的哈希函数不同,因为它需要共享的密钥,这使得只有拥有正确...

    信息安全概论课件 第五章 消息认证与数字签名.pdf

    数字签名需要对原始信息进行散列处理,生成一个消息摘要,然后使用发送者的私钥对这个消息摘要进行加密,生成签名。接收方可以使用发送者的公钥对签名进行解密,同时对接收的信息进行散列处理,生成另一个消息摘要。...

    计算机安全保密消息认证与数字签名.ppt

    * 使用哈希函数生成消息摘要 * 使用数字签名技术 数字签名是指使用加密技术来确保消息的来源和完整性。数字签名可以使用公钥密钥对来生成和验证。数字签名的优点包括: * 确定消息来源 * 确定消息完整性 * 保证...

    消息认证-数字签名-总结1

    本文主要探讨了数字签名、消息认证以及相关的加密技术,包括对称加密、非对称加密、消息摘要、MAC等,旨在解决数据安全传输中的四个关键问题:数据的安全性、完整性、真实性和不可否认性。 1. 数据加密:对称加密如...

    MAC算法小工具

    它通过将一个密钥与消息结合,生成一个固定长度的摘要,这个摘要称为MAC值。MAC算法通常用于网络通信、文件完整性检查以及数据库保护等领域,确保信息在传输过程中没有被篡改或伪造。 在提供的"MAC算法小工具"中,...

    Delphi MAC加密

    MAC是由一个密钥和任意长度的消息共同计算出的一个固定长度的摘要。这种机制可以确保只有拥有正确密钥的人才能生成有效的MAC,从而防止中间人攻击和数据篡改。常见的MAC算法有HMAC(基于哈希的MAC)、CMAC(基于块...

    无涯教程(LearnFk)-Java-密码教程离线版.pdf

    例如,消息摘要和哈希函数在保证数据的完整性上发挥着核心作用,而MAC则在双向通信中提供数据认证。掌握这些技术有助于构建安全、可靠的软件系统。同时,随着安全威胁的不断变化,开发者需要持续关注新的安全技术...

    消息认证及其算法消息认证及其算法.pdf

    它们将任意长度的消息压缩成固定长度的摘要,这些摘要具有单向性和碰撞抵抗性,即很难找到两个不同的消息产生相同的散列值。然而,尽管MD5在过去的安全性较高,但现在已经存在已知的碰撞攻击,因此不应再用于安全性...

Global site tag (gtag.js) - Google Analytics