消息摘要算法分为三类:


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的更多相关文章

  1. HmacSHA256摘要算法

    mac(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥. 甲乙双方进行数据交换可以采取如下流程完成 ...

  2. 消息摘要算法-MAC算法系列

    一.简述 mac(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也经常被称作HMA ...

  3. 消息摘要算法-HMAC算法

    一.简述 mac(Message Authentication Code.消息认证码算法)是含有密钥散列函数算法.兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也常常被称作HMA ...

  4. 信息摘要算法之五:HMAC算法分析与实现

    MAC(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也经常被称作HMAC算法. ...

  5. password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)

    Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又称为数字摘要(Digital Digest). 它是一个唯一相应一个消息或文本的固定长度 ...

  6. 第五章 消息摘要算法--MAC

    注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第6章“验证数据完整性--消息摘要算法” 5.1.mac(又称为Hmac) 原理:在md与sha系列算法的基础上加入了密钥,是 ...

  7. Java编码算法和摘要算法

    编码算法 编码算法是将一种形式转换成等价的另外一种形式.主要是为了方便某种特定场景的处理. 字母如何在计算机中表示呢? 用ASCII编码 那中文字符如何在计算机中表示呢? 用Unicode编码 如何同 ...

  8. MD、SHA、MAC消息摘要算法实现与应用

    1.消息摘要概述 消息摘要(Message Digest)又称为数字摘要(Digital Digest).它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生 ...

  9. 廖雪峰Java10加密与安全-3摘要算法-5Hmac

    1 比较MD5和HamcMD5 HmacMD5可以看作带安全salt的MD5 import javax.crypto.KeyGenerator; import javax.crypto.Mac; im ...

随机推荐

  1. openwrt配置strongswan对接hillstone ipsec的笔记

    一.主要参考资料: https://openwrt.org/docs/guide-user/services/vpn/ipsec/strongswan/roadwarrior https://open ...

  2. SpringCloud2.0 Zuul 网关路由 基础教程(十)

    1.启动基础工程 1.1.启动[服务注册中心],工程名称:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) ...

  3. S3cmd

    一:安装方法 #wget http://nchc.dl.sourceforge.net/project/s3tools/s3cmd/1.0.0/s3cmd-1.0.0.tar.gz #tar -zxf ...

  4. 在输出debug日志前加上logger.isDebugEnabled()判断的原因

    场景: String token = md5.substring(0, 10) + base64Two + md5.substring(10); if (logger.isDebugEnabled() ...

  5. 【测试工具】moco入门(一)

    转自:https://www.cnblogs.com/tangqiu/p/9493147.html 简单来说,Moco就是解决了开发前端时没有后端支持,开发接口时依赖没有到位的尴尬场景.当然Moco的 ...

  6. win32gui.EnumWindows

    python2 import win32gui, win32con, win32api import time, math, random def _MyCallback( hwnd, extra ) ...

  7. C# 判断程序是否执行 进行启动或前台显示

    #region 显示程序 [DllImport("user32.dll", EntryPoint = "FindWindow")] public static ...

  8. (尚001)Vue框架介绍

    框架出现时间: Angular -->React(组件化+虚拟动) -->Vue(读作view) 1.Vue.js是什么?(作者:尤雨溪(一位华裔前Google工程师))        尤 ...

  9. [分享]Passcape Software - Windows Password Recovery

    [分享]Passcape Software - Windows Password Recovery https://bbs.pediy.com/thread-245965.htm   [[other] ...

  10. mysql 索引基本概念

    1. 什么是索引? 索引是一种数据结构,可以帮助我们快速的进行数据的查找. 2. 索引是个什么样的数据结构呢? 索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B ...