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 ...
随机推荐
- 小程序~获取手机号getPhoneNumber提示该appid没有权限
处理思路 (1)小程序是不是企业主体 (2)有没有进行认证 (3)如果没有 是不可以获取用户手机号码的 .
- Run Multiple Webpack Configs Sequentially
https://www.viget.com/articles/run-multiple-webpack-configs-sequentially/ const path = require('path ...
- 《你说对就队》第八次团队作业:Alpha冲刺 第三天
<你说对就队>第八次团队作业:Alpha冲刺 第三天 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 团队名称 <你说对就队> ...
- HTTP头部
10-URI的基本格式以及与URL的区别 HTTP连接的常见流程 从TCP编程上看HTTP请求处理 长连接与短连接 补充一下代理的知识 什么是正向代理,什么是反向代理? 想在外部公网访问公司内部局域网 ...
- pandas数据类型(二)与numpy的str和object类型之间的区别
现象: Numpy区分了str和object类型,其中dtype(‘S’)和dtype(‘O’)分别对应于str和object. 然而,pandas缺乏这种区别 str和object类型都对应dtyp ...
- Python凯撒密码和括号匹配
1.凯撒密码: 除了特殊字符不转化,其余的按照规定经行转译,以下以a~z和A~Z的字符都进行转译. plaincode = input("")print(len(plaincode ...
- Java - Oscache 缓存
1. web.xml 文件配置 <!-- 配置页面缓存 --> <filter> <filter-name>oscache</filter-name> ...
- Python3学习(一)
基本语法 python3不向下兼容,有些语法跟python2.x不一样,IDLE shell编辑器,快捷键:ALT+p,上一个历史输入内容,ALT+n 下一个历史输入内容.#idle中按F5可以运行代 ...
- Tensorflow细节-P190-输入文件队列
以下代码要学会几个地方 1.filename = ('data.tfrecords-%.5d-of-%.5d' % (i, num_shards)) 这个东西就是要会data.tfrecords-%. ...
- C#在WebApi 中使用Redis 的方法
首先Startup public void ConfigureServices(IServiceCollection services) { services.AddControllers(); // ...