HmacSHA256摘要算法2 MACCoder
消息摘要算法分为三类:
MD(Message Digest):消息摘要
SHA(Secure Hash Algorithm):安全散列
MAC(Message Authentication Code):消息认证码
MAC算法
介绍:
HMAC(keyed-Hash Message Authentication Code):含有密钥的散列函数算法
包含了MD和SHA两个系列的消息摘要算法
HMAC只是在原有的MD和SHA算法的基础上添加了密钥。
import java.nio.charset.Charset; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; /** * MAC消息摘要组件 * * */ public class MACCoder { public static byte[] HMAC_SHA(byte[] data1,byte[] data2){ final Charset UTF_8 = Charset.forName("UTF-8"); try { String secret = "0X84NSTAokzW1iWCCLFIzP1JYv1utSUT"; Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(UTF_8), "HmacSHA256"); sha256_HMAC.init(secret_key); sha256_HMAC.update(data1); sha256_HMAC.update(data2); return sha256_HMAC.doFinal(); } catch (Exception e){ e.printStackTrace(); } return null; } public static String getHmacSHA256FingerPrint(String str1,String str2) { final Charset UTF_8 = Charset.forName("UTF-8"); try { String secret = "0X84NSTAokzW1iWCCLFIzP1JYv1utSUT"; Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(UTF_8), "HmacSHA256"); sha256_HMAC.init(secret_key); sha256_HMAC.update(str1.getBytes(UTF_8)); sha256_HMAC.update(str2.getBytes(UTF_8)); byte[] arr= sha256_HMAC.doFinal(); String retval=Base64.encode(arr); return retval; } catch (Exception e){ return null; } } /** * 进行相关的摘要算法的处理展示 * @throws Exception * **/ public static void main(String[] args) throws Exception { /*final Charset UTF_8 = Charset.forName("UTF-8"); byte[] datas1="{ \"type\": \"webhook_event\", \"id\": \"3b8800b1-c416-4e65-aaf2-00b16bbadfc1\", \"created_at\": \"2019-09-30T02:27:41-07:00\", \"trigger\": \"FILE.UPLOADED\", \"webhook\": { \"id\": \"232295281\", \"type\": \"webhook\" }, \"created_by\": { \"type\": \"user\", \"id\": \"8571226476\", \"name\": \"sv ecld-tms-scom-t01\", \"login\": \"sv-ecld-tms-scan-t01@rakuten.com\" }, \"source\": { \"id\": \"532443758714\", \"type\": \"file\", \"file_version\": { \"type\": \"file_version\", \"id\": \"563691410130\", \"sha1\": \"1a9f9f000a2c1fe998510028b9a25da013fde0fd\" }, \"sequence_id\": \"0\", \"etag\": \"0\", \"sha1\": \"1a9f9f000a2c1fe998510028b9a25da013fde0fd\", \"name\": \"0301_JP_20190924205001.csv\", \"description\": \"\", \"size\": 105, \"path_collection\": { \"total_count\": 2, \"entries\": [ { \"type\": \"folder\", \"id\": \"0\", \"sequence_id\": null, \"etag\": null, \"name\": \"All Files\" }, { \"type\": \"folder\", \"id\": \"88535556629\", \"sequence_id\": \"0\", \"etag\": \"0\", \"name\": \"T01\" } ] }, \"created_at\": \"2019-09-30T02:27:41-07:00\", \"modified_at\": \"2019-09-30T02:27:41-07:00\", \"trashed_at\": null, \"purged_at\": null, \"content_created_at\": \"2019-09-30T00:34:07-07:00\", \"content_modified_at\": \"2019-09-30T00:34:07-07:00\", \"created_by\": { \"type\": \"user\", \"id\": \"8571226476\", \"name\": \"sv ecld-tms-scom-t01\", \"login\": \"sv-ecld-tms-scan-t01@rakuten.com\" }, \"modified_by\": { \"type\": \"user\", \"id\": \"8571226476\", \"name\": \"sv ecld-tms-scom-t01\", \"login\": \"sv-ecld-tms-scan-t01@rakuten.com\" }, \"owned_by\": { \"type\": \"user\", \"id\": \"8571226476\", \"name\": \"sv ecld-tms-scom-t01\", \"login\": \"sv-ecld-tms-scan-t01@rakuten.com\" }, \"shared_link\": null, \"parent\": { \"type\": \"folder\", \"id\": \"88613793662\", \"sequence_id\": \"0\", \"etag\": \"0\", \"name\": \"T01\" }, \"item_status\": \"active\" }, \"additional_info\": []}".getBytes(UTF_8); byte[] datas2="2019-12-09T02:27:42-07:00".getBytes(UTF_8); byte[] results=MACCoder.HMAC_SHA(datas1,datas2); String str=Base64.encode(results); System.out.println(str);*/ String str1="{ \"type\": \"webhook_event\", \"id\": \"3b8800b1-c416-4e65-aaf2-00b16bbadfc1\", \"created_at\": \"2019-09-30T02:27:41-07:00\", \"trigger\": \"FILE.UPLOADED\", \"webhook\": { \"id\": \"232295281\", \"type\": \"webhook\" }, \"created_by\": { \"type\": \"user\", \"id\": \"8571226476\", \"name\": \"sv ecld-tms-scom-t01\", \"login\": \"sv-ecld-tms-scan-t01@rakuten.com\" }, \"source\": { \"id\": \"532443758714\", \"type\": \"file\", \"file_version\": { \"type\": \"file_version\", \"id\": \"563691410130\", \"sha1\": \"1a9f9f000a2c1fe998510028b9a25da013fde0fd\" }, \"sequence_id\": \"0\", \"etag\": \"0\", \"sha1\": \"1a9f9f000a2c1fe998510028b9a25da013fde0fd\", \"name\": \"0301_JP_20190924205001.csv\", \"description\": \"\", \"size\": 105, \"path_collection\": { \"total_count\": 2, \"entries\": [ { \"type\": \"folder\", \"id\": \"0\", \"sequence_id\": null, \"etag\": null, \"name\": \"All Files\" }, { \"type\": \"folder\", \"id\": \"88535556629\", \"sequence_id\": \"0\", \"etag\": \"0\", \"name\": \"T01\" } ] }, \"created_at\": \"2019-09-30T02:27:41-07:00\", \"modified_at\": \"2019-09-30T02:27:41-07:00\", \"trashed_at\": null, \"purged_at\": null, \"content_created_at\": \"2019-09-30T00:34:07-07:00\", \"content_modified_at\": \"2019-09-30T00:34:07-07:00\", \"created_by\": { \"type\": \"user\", \"id\": \"8571226476\", \"name\": \"sv ecld-tms-scom-t01\", \"login\": \"sv-ecld-tms-scan-t01@rakuten.com\" }, \"modified_by\": { \"type\": \"user\", \"id\": \"8571226476\", \"name\": \"sv ecld-tms-scom-t01\", \"login\": \"sv-ecld-tms-scan-t01@rakuten.com\" }, \"owned_by\": { \"type\": \"user\", \"id\": \"8571226476\", \"name\": \"sv ecld-tms-scom-t01\", \"login\": \"sv-ecld-tms-scan-t01@rakuten.com\" }, \"shared_link\": null, \"parent\": { \"type\": \"folder\", \"id\": \"88613793662\", \"sequence_id\": \"0\", \"etag\": \"0\", \"name\": \"T01\" }, \"item_status\": \"active\" }, \"additional_info\": []}"; String str2="2019-12-09T02:27:42-07:00"; String str=getHmacSHA256FingerPrint(str1,str2); System.out.println(str); } }
输出:
9Fck1jx9XL0LbKoJrP80qncEWvsuniI94aWRr1Fvi7I=
HmacSHA256摘要算法2 MACCoder的更多相关文章
- HmacSHA256摘要算法
mac(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥. 甲乙双方进行数据交换可以采取如下流程完成 ...
- 消息摘要算法-MAC算法系列
一.简述 mac(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也经常被称作HMA ...
- 消息摘要算法-HMAC算法
一.简述 mac(Message Authentication Code.消息认证码算法)是含有密钥散列函数算法.兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也常常被称作HMA ...
- 信息摘要算法之五:HMAC算法分析与实现
MAC(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也经常被称作HMAC算法. ...
- password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又称为数字摘要(Digital Digest). 它是一个唯一相应一个消息或文本的固定长度 ...
- 第五章 消息摘要算法--MAC
注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第6章“验证数据完整性--消息摘要算法” 5.1.mac(又称为Hmac) 原理:在md与sha系列算法的基础上加入了密钥,是 ...
- Java编码算法和摘要算法
编码算法 编码算法是将一种形式转换成等价的另外一种形式.主要是为了方便某种特定场景的处理. 字母如何在计算机中表示呢? 用ASCII编码 那中文字符如何在计算机中表示呢? 用Unicode编码 如何同 ...
- MD、SHA、MAC消息摘要算法实现与应用
1.消息摘要概述 消息摘要(Message Digest)又称为数字摘要(Digital Digest).它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生 ...
- 廖雪峰Java10加密与安全-3摘要算法-5Hmac
1 比较MD5和HamcMD5 HmacMD5可以看作带安全salt的MD5 import javax.crypto.KeyGenerator; import javax.crypto.Mac; im ...
随机推荐
- 邮件学习过程中关于request.POST的使用
今天的话主要的精力都集中在邮件系统demo的实现,因为自己个人技术有限,所以做出来的相当简陋,在其中碰到的问题其实也是比较多的,对于基于django的邮件相对来说比较容易,然后就是在提交数据,获取po ...
- springboot引用三方jar包
在springboot项目中可能会用到三方工具类(比如接入短信网关时给出的工具jar包),这时候需要在springboot项目中手动引入进来 1. springboot工程目录, lib/ucpaas ...
- kubernetes-使用kubeadm添加node节点
node节点服务器需要安装好 kubeadm, kubelet 和 kubectl: 使用kubeadm join 命令即行,使用master节点kebeadm init时的提示: root@boke ...
- 191012 python3关于空格打印、赋值、+=符号的小坑
1. python3中,直接打印空格不显示,不论是pycharm,cmd命令窗口,还是linux中,都有尝试,但是空格' '不能显示出来: # 打印菱形,只能用center方法for i in ran ...
- ASP.NET Core 2.2 项目升级至 3.0 备忘录
将 ASP.NET Core 2.2 迁移至 ASP.NET Core 3.0 需要注意的地方记录在这篇随笔中. TargetFramework 改为 netcoreapp3.0 <Target ...
- WPYOU主题加密码代码的解码
我手上管理一个公司的wordpress网站的主题用的是wpyou的主题,但是在网站有安全隐患的情况下,看到wpyou有把代码进行加密过. 这种加密代码的行为,会被D盾认为是后门,所以一度觉得其文件和代 ...
- Java判断对象类型是否为数组
判断对象是否为数组: public static void main(String[] args) { String[] a = ["1","2"]; if(a ...
- 微信小程序~调试
小程序调试面板 模拟器 模拟器模拟微信小程序在客户端真实的逻辑表现,对于绝大部分的 API 均能够在模拟器上呈现出正确的状态. 自定义编译 点击工具栏中的编译按钮或者使用快捷键 Ctrl(⌘) + B ...
- Springboot的 get查看,post创建,put更新,delete删除 -四种请求实例(form + controller)
总结 --get查看数据, post创建新数据行, put更新数据, delete删除数据行-- add和select功能都共用这一个页面, 需要进行区分显示 ,使用thymeleaf的三元选择,判断 ...
- Mycat简单配置
最近项目中需要用到Mycat来作为Mysql的分表中间件.所以稍微研究了一下. Mycat使用起来是非常方便,而且最重要的是配置简单,稍显麻烦的就是需要对库中的每一个表都进行配置. 记录一下最重要的几 ...