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 ...
随机推荐
- Kubernetes 1.15部署日记-使用kubeadm--<5-6>
5.配置pod网络 5.1下载calico 网络配置文件 [root@k8s-1 libj]# curl -O https://docs.projectcalico.org/v3.6/getting- ...
- 基于335X平台Linux交换芯片驱动开发
基于335X平台Linux交换芯片驱动开发 一.软硬件平台资料 1.开发板:创龙AM3359核心板,网口采用RMII形式. 2.Kernel版本:4.4.12,采用FDT 3.交换芯片MARVEL ...
- IDEA远程连接和上传文件到服务器
公司电脑是win,所以远程控制服务器就不能用之前自己笔记本ubuntu自带的终端了. 后来在万能的群友的提醒下,IDEA本身就自带了远程功能,摸索了一下,使用IDEA连接服务器并且可以上传文件了. 这 ...
- C++(三十五) — 运算符重载
运算符重载的实质:函数重载.除了增加一个关键字 operator 外,与函数重载没有区别,都是通过该类的某个对象来访问重载运算符. (1)重载运算符时,运算符运算顺序和优先级不变,操作数个数不变: ( ...
- Vue移动组件库Mint UI的安装与使用
一.什么是 Mint UI 1.Mint UI 包含丰富的 CSS 和 JS 组件,可以提升移动端开发效率 2.Mint UI 按需加载组件 3.Mint UI 轻量化 二.Mint UI 的安装 1 ...
- django-ContentType的简单使用
ContentType 一般我们有多张表同时外键关联同一张表的时候,可以考虑使用ContentType models.py from django.db import models from djan ...
- 在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句:
在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句: 如果是String类型的字符串进行判空的时候: <if test=&q ...
- 《BUG创造队》作业8:软件测试与Alpha冲刺(第三天)
项目 内容 这个作业属于哪个课程 2016级软件工程 这个作业的要求在哪里 实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 BUG创造队 作业学习目标 (1)掌握软件测试基础技术.(2)学习 ...
- js与jquery中html() text() val()中的区别
首先html() text() val() 是jquery方法. 1.html()取得内容可以包含标签. 2.text()取得内容为元素文本内容. 3.val()只有value属性的元素才能使用该方法 ...
- c语言中字符串转数字的函数
ANSI C 规范定义了 atof().atoi().atol().strtod().strtol().strtoul() 共6个可以将字符串转换为数字的函数,大家可以对比学习.另外在 C99 / C ...