消息摘要算法分为三类:


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. 爬虫之cookie与代理

    一, 基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达 ...

  2. [nginx] nginx源码分析--proxy模式下nginx的自动重定向auto_redirect

    描述 我们配置了一个proxy模式下的nginx, upstream backend-test { server ; } server { listen ; location = /nginx/hww ...

  3. python算法与数据结构-算法介绍(31)

    一.算法和数据结构 什么是算法和数据结构?如果将最终写好运行的程序比作战场,我们程序员便是指挥作战的将军,而我们所写的代码便是士兵和武器. 那么数据结构和算法是什么?答曰:兵法!故,数据结构和算法是一 ...

  4. Route all trafic for specific ip over specific network interface

    15 I have a linux server that needs to get some routing. I'm fairly new at this and i don't find any ...

  5. POJ2282 The Counting Problem

    题意 Language:DefaultEspañol The Counting Problem Time Limit: 3000MS Memory Limit: 65536K Total Submis ...

  6. spring boot学习笔记(二)创建spring boot项目

    用eclipse(需要用高版本,要不然弄不出来):new →Spring Sarter Project 用IDEA:一般默认 一般默认 入门级的先 剩下的一般默认... 一.项目至少有下面的东西,里面 ...

  7. Oracle的instr()函数和substr()函数

    INSTR()函数 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法: instr(sourceString ...

  8. Enterprise Architect 14破解版 安装包 安装教程

    安装包以及破解补丁下载: 链接:https://pan.baidu.com/s/1es0wN_6-d9pk4xnSN1SiFA 提取码:bor0 安装包链接失效可在下方留言 安装以及破解教程 参考链接 ...

  9. jdk、jre、jvm三者联系

    JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Enviro ...

  10. C++处理异常

    C++处理异常