博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
信息加密之消息摘要算法的MAC
阅读量:4502 次
发布时间:2019-06-08

本文共 1946 字,大约阅读时间需要 6 分钟。

  MAC是消息摘要算法的第三种实现方式,另外两种方式分别为:MD2\4\5、SHA。

MAC的jdk实现:1、默认密钥方式

private static void MAC_JDK(){        try {            KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5");//初始化KeyGenerator            SecretKey secretKey = keyGenerator.generateKey();//产生密钥            byte[] key = secretKey.getEncoded();//获得默认密钥                        SecretKey restorSecretKey = new SecretKeySpec(key, "HmacMD5");//还原密钥            Mac mac = Mac.getInstance(restorSecretKey.getAlgorithm());//示例化MAC            mac.init(restorSecretKey);//初始化MAC            byte[] hmacMD5Bytes = mac.doFinal(src.getBytes());//执行摘要            System.out.println("hmacMD5Byte : "+Hex.encodeHexString(hmacMD5Bytes));        } catch (Exception e) {            e.printStackTrace();        }        }

2、动态密钥方式:

private static void MAC_JDK_dongtai(){        try {            byte[] key = Hex.decodeHex(new char[]{'a','a','a','a','a','a','a','a','a','a'});//动态获得密钥                        SecretKey restorSecretKey = new SecretKeySpec(key, "HmacMD5");//还原密钥            Mac mac = Mac.getInstance(restorSecretKey.getAlgorithm());//示例化MAC            mac.init(restorSecretKey);//初始化MAC            byte[] hmacMD5Bytes = mac.doFinal(src.getBytes());//执行摘要            System.out.println("hmacMD5Byte : "+Hex.encodeHexString(hmacMD5Bytes));        } catch (Exception e) {            e.printStackTrace();        }        }

MAC的BC实现:

private static void MAC_BC(){        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[] mac_BC_Byte = new byte[hmac.getMacSize()];//执行摘要        hmac.doFinal(mac_BC_Byte, 0);        System.out.println("mac_BC_Byte : "+Hex.encodeHexString(mac_BC_Byte));    }

  到今天JAVA中的Base64、对称加密、消息摘要加密的实现总结就完工了,如果哪位对此感兴趣,还望多多交流。(1453296946@qq.com)

转载于:https://www.cnblogs.com/AndroidJotting/p/4284987.html

你可能感兴趣的文章
hdu 1846 Brave Game
查看>>
数据库连接历险记
查看>>
抛弃msvcrtXX库
查看>>
血眼龙王传--秋叶青篇
查看>>
Runtime
查看>>
取消git忽略文件
查看>>
Leetcode2--->链表中对应位相加(进位)
查看>>
PXE远程自动安装操作系统
查看>>
java开发知识IO知识之输入输出流以及文件
查看>>
SurfaceViewVideoList网络获取视频播放
查看>>
Oracle 笔记(二)
查看>>
微信公众号开发--访问网络用到的工具类
查看>>
wpf中利用多重绑定实现表中数据越界自动报警
查看>>
为Linux配置常用源:epel和IUS
查看>>
天府地
查看>>
C#高级编程
查看>>
JS实现从照片中裁切自已的肖像
查看>>
使用 https://git.io 缩短 a GitHub.com URL.
查看>>
拷贝、浅拷贝、深拷贝解答
查看>>
NS3 实验脚本的编写步骤
查看>>