消息摘要算法分为三类:


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. WampServer详解

    php能做什么,它是运行在服务器端的,web网站大部分数据都是存储在服务器上的,PHP就是用来处理这些存储在服务器的数据.跨平台,服务器可以是多种平台上的服务器,脚本语言,免费. wampserver ...

  2. mysql 优化修复表

    OPTIMIZE TABLE `table_name` 优化表 MyISAM 引擎清理碎片 OPTIMIZE语法: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABL ...

  3. Linux命令——systemctl

    前言 systemctl本身的意义并不仅仅是一个命令那么简单,他标志着SysV时代的终结,Systemd时代的开始.CentOS 7.X系列已经抛弃SysV,全面拥抱Systemd这个init sys ...

  4. CentOS 7.x 配置静态 IP 并启用

    centos 7.x 配置静态 IP 并启用 0 问题由来 通过查询本机的IP,发现本机并没有有效IP: [pan@localhost ~]$ ip addr 所以,我们需要设置本机的静态IP,并启用 ...

  5. 采用MySQL-MMM做DB高可用时,遇到的一个小坑

    一.服务器分布   二.MySQL-MMM 配置 (1).公共配置[所有DB节点:Master1.Master2.Slave1.Slave2   Monitor节点] # vim /etc/mysql ...

  6. python抽象基类

    抽象基类 抽象基类提了一种方式,用以组织对象的层次结构,做出关于所需方法的断言,以及实现其他一些功能 要定义抽象基类,需要使用abc模块,该模块定义了一个元类(ABCMeta) 和一组装饰器(@abs ...

  7. 史诗级干货-python爬虫之增加CSDN访问量

    史诗级干货-python爬虫之增加CSDN访问量 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net ...

  8. java基础(10)---leetcode的String、数组以及集合的一些使用

    整数 一.整数反转_7 /* 12345 变成 54321 */ public class 整数反转_7 { public static void main(String[] args){ int x ...

  9. Java四种读取和创建XML文档的例子教程

    四种方法解析XML文档:Dom.SAX.JDOM.dom4j          1.了解XML XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集 ...

  10. ES基本搜索(1)

    1.空搜索 GET  <写路径>/_search 返回的结果: eg: GET propdict/doc/_search { , "timed_out": false, ...