当前位置: 首页 > 编程笔记 >

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

马峻
2023-03-14
本文向大家介绍Java消息摘要算法MAC实现与应用完整示例,包括了Java消息摘要算法MAC实现与应用完整示例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Java消息摘要算法MAC实现与应用。分享给大家供大家参考,具体如下:

一 介绍

MAC:Message Authentication Code
HMAC:keyed-Hash Message Authencication Code,含有密钥的散列函数算法。
融合MD、SHA
MD系列:HmacMD2、HmacMD4、HmacMD5
SHA系列:HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512
应用:SecureCRT

二 参数说明

代码实现

package com.imooc.security.hmac;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
import org.bouncycastle.crypto.digests.MD5Digest;
import org.bouncycastle.crypto.macs.HMac;
import org.bouncycastle.crypto.params.KeyParameter;
public class ImoocHmac {
    private static String src = "cakin24 security hmac";
    public static void main(String[] args) {
         jdkHmacMD5();
         bcHmacMD5();
    }
    public static void jdkHmacMD5() {
        try {
            KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5");//初始化KeyGenerator
            SecretKey secretKey = keyGenerator.generateKey();//产生密钥
//            byte[] key = secretKey.getEncoded();//获得密钥
            byte[] key = Hex.decodeHex(new char[] {'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'});
            SecretKey restoreSecretKey = new SecretKeySpec(key, "HmacMD5");//还原密钥
            Mac mac = Mac.getInstance(restoreSecretKey.getAlgorithm());//实例化MAC
            mac.init(restoreSecretKey);//初始化Mac
            byte[] hmacMD5Bytes = mac.doFinal(src.getBytes());//执行摘要
            System.out.println("jdk hmacMD5 : " + Hex.encodeHexString(hmacMD5Bytes));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void bcHmacMD5() {
        HMac hmac = new HMac(new MD5Digest());
        hmac.init(new KeyParameter(org.bouncycastle.util.encoders.Hex.decode("aaaaaaaaaa")));
        hmac.update(src.getBytes(), 0, src.getBytes().length);
        byte[] hmacMD5Bytes = new byte[hmac.getMacSize()];//执行摘要
        hmac.doFinal(hmacMD5Bytes, 0);
        System.out.println("bc hmacMD5 : " + org.bouncycastle.util.encoders.Hex.toHexString(hmacMD5Bytes));
    }
}

四 实现效果

jdk hmacMD5 : d23aa029b2bacdd3979d10f0931f9af6
bc hmacMD5 : d23aa029b2bacdd3979d10f0931f9af6

五 应用场景

更多关于java相关内容感兴趣的读者可查看本站专题:《Java数学运算技巧总结》、《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

 类似资料:
  • 本文向大家介绍Java加密 消息摘要算法MAC实现详解,包括了Java加密 消息摘要算法MAC实现详解的使用技巧和注意事项,需要的朋友参考一下 MAC是消息摘要算法的第三种实现方式,另外两种方式分别为:MD2\4\5、SHA。 MAC的jdk实现:1、默认密钥方式 2、动态密钥方式: MAC的BC实现: 到今天JAVA中的Base64、对称加密、消息摘要加密的实现总结就完工了,如果哪位对此感兴趣,

  • 本文向大家介绍java实现的MD5摘要算法完整实例,包括了java实现的MD5摘要算法完整实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java实现的MD5摘要算法。分享给大家供大家参考,具体如下: 使用org.apache.commons.codec.digest.DigestUtilsorg.apache.commons.codec.digest.DigestUtils来实现md

  • 本文向大家介绍Java加密 消息摘要算法SHA实现详解,包括了Java加密 消息摘要算法SHA实现详解的使用技巧和注意事项,需要的朋友参考一下 SHA是消息摘要算法的一种实现方式,前面已经总结过MD2\4\5的实现,接下来就为大家总结一下SHA的实现。 SHA的jdk实现: SHA的BC实现: 对于SHA224,JAVA jdk并没有提供实现,下面是利用BC实现的方法: 对于SHA224还有一种类

  • Hash 算法 定义 Hash (哈希或散列)算法是信息技术领域非常基础也非常重要的技术。它能任意长度的二进制值(明文)映射为较短的固定长度的二进制值(Hash 值),并且不同的明文很难映射为相同的 Hash 值。 例如计算一段话“hello blockchain world, this is yeasy@github”的 MD5 hash 值为 89242549883a2ef85dc81b90f

  • 本文向大家介绍java算法实现红黑树完整代码示例,包括了java算法实现红黑树完整代码示例的使用技巧和注意事项,需要的朋友参考一下 红黑树 定义 红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。 红黑树的另一种定义是含有红黑链接并满足下列条件的二叉查找树: 红链接均为左链接;没有任何一个结点同时和两条红链接相连;该树

  • 本文向大家介绍浅析java消息摘要与数字签名,包括了浅析java消息摘要与数字签名的使用技巧和注意事项,需要的朋友参考一下 消息摘要 算法简述 定义 它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了。因此消息摘要保证了消息的完整性。消息摘要采用单向Hash