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 ...
随机推荐
- [ipsec][crypto] 有点不同的数字证书到底是什么
前言 前言是在写完了全文之后回头补的.本意是想完全抽象的把证书的抽象逻辑意义表达出来,因为你能找到的大部分 资料都深陷在技术细节与行业规范里.只有其型没有其理,没有什么比理解一个事物的内在合理性更有乐 ...
- QT5无法定位程序输入点 于动态链接库QtCore5.dll的解决
本人新手刚接触QT5,今天在写程序时,在QtCreator中可以运行,但是单独运行.exe文件时报错 之后发现是因为我之前在path路径中添加了MinGw,导致里面也有Qt库.但是我编译的时候用的是安 ...
- 自定义Lombok注解
Java 是一门"繁琐"的语言,使用 Lombok 可以显著地减少样板代码.比如使用 @Getter 注解可以为你的私有属性创建 get 方法. 源代码 @Getter priva ...
- PS批量截取图片
本文提供的是需要截取大量图片的方法,仅供参考. 打开ps,在菜单栏找到窗口,点击窗口里面的动作 窗口右上方 或者下方会出现一个小窗口 点击小窗口右下角删除图标旁边的图标新建动作,工作名称:截取图片 . ...
- 乔布斯在位时,库克实质上已经在做CEO的工作了:3星|《蒂姆·库克传》
“ 一些人认为艾夫是接替乔布斯的热门人选,他对苹果的原晃和产品来说至关重要,但他本人对管理企业却毫无兴趣.艾夫想继统做设计.在苹果,他拥有所有设计师都梦寐以求的工作环境——无限的资源和自由创作的空间. ...
- 深度学习环境搭建(CUDA9.0 + cudnn-9.0-linux-x64-v7 + tensorflow_gpu-1.8.0 + keras)
关于计算机的硬件配置说明 推荐配置 如果您是高校学生或者高级研究人员,并且实验室或者个人资金充沛,建议您采用如下配置: 主板:X299型号或Z270型号 CPU: i7-6950X或i7-7700K ...
- 《CoderXiaoban》第八次团队作业:Alpha冲刺4
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件测试基 ...
- Vue 项目目录结构分析
Vue项目目录结构分析 ├── v-proj | ├── node_modules // 当前项目所有依赖,一般不可以移植给其他电脑环境 | ├── public | | ├── favicon.ic ...
- matlab的拟合函数polyfit()函数
matlab的多项式拟合: polyfit()函数 功能:在最小二乘法意义之上,求解Y关于X的最佳的N次多项式函数. clc;clear; close all; x=[ ]; y=[2.7 7.4 2 ...
- python通过globals()函数获取全局变量,并销毁全局变量
如果想获取python程序中所有全局变量的信息,并将其销毁,可以定义如下函数 def clear(): for key, value in globals().items(): if callable ...