java HMacMD5 加密_wangnan1117的博客-程序员秘密

技术标签: Java常用技术  

package com.wn.encode.security;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class HMacMD5
{
    public static final String KEY_MAC = "HmacMD5";
    /**
     * HMAC加密
     *
     * @param data
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] encryptHMAC(byte[] data, String key) throws Exception {

        SecretKey secretKey = new SecretKeySpec(key.getBytes(), KEY_MAC);
        Mac mac = Mac.getInstance(secretKey.getAlgorithm());
        mac.init(secretKey);
        return mac.doFinal(data);
    }
    static String encodeBase64(byte[] source) throws Exception{
        return new String(Base64.encodeBase64(source), "UTF-8");
    }
    /*byte数组转换为HexString*/
    public static String byteArrayToHexString(byte[] b) {
        StringBuffer sb = new StringBuffer(b.length * 2);
        for (int i = 0; i < b.length; i++) {
            int v = b[i] & 0xff;
            if (v < 16) {
                sb.append('0');
            }
            sb.append(Integer.toHexString(v));
        }
        return sb.toString();
    }
    public static String encryptHMAC2String(String  data, String key)throws Exception {
        byte[] b = encryptHMAC(data.getBytes("UTF-8"), key);
        return byteArrayToHexString(b);
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wangnan1117/article/details/79170776

智能推荐

Samba服务器的安装配置和应用_用于设置samba服务器要加入的工作组名称,也即出现在windows操作系统中_aidenliu的博客-程序员秘密

随着计算机网络的发展,实现不同操作系统的文件和打印共享成为一个必然的趋势。用过Windows的用户都知道,网上邻居是一个可以方便地访问其他Windows计算机资源的共享方式。为了使Windows用户以及Linux用户能够互相访问彼此的资源,Linux提供了一套资源共享的软件——S

tomcat 配置ssl/https 证书问题(一)- No enum constant org.apache.tomcat.util.net.SSLHostConfigCertificate.Typ_张晓花的博客-程序员秘密

Tomcat9配置https 证书出现错误No enum constant org.apache.tomcat.util.net.SSLHostConfigCertificate.Typ11-Oct-2017 16:33:42.602 SEVERE [main] org.apache.tomcat.util.digester.Digester.startElement Begin event threw exception java.lang.IllegalArgumentException: No e

汇编常用指令_汇编指令_ai-exception的博客-程序员秘密

通用寄存器及使用IA-32系列有8个32位通用寄存器,名称分别为:EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI,如图:简单传送指令指令中文名格式解释备注locationMOV传送指令MOV DEST,SRCDEST&amp;amp;lt;=SRCP20XCHG交换指令XCHG OPER1,OPER2把操作数oper1的内容与操作数oper...

数学建模之Python-微分方程建模实例_Cabbage coder的博客-程序员秘密

前言:微分方程的数学求解用到再细学 见python数学建模与实验pdf微分方程建模-Malthus模型微分方程建模-Logitic模型这里不细说了 感觉用不太到 也是调参预测人口数量的微分方程建模-传染病模型传染病模型例子:#程序文件Pan8_1.pyimport numpy as npfrom scipy.integrate import odeints0=155.0; i0=1.0; s_inf=60.0;sigma=(np.log(s0)-np.log(s_in

CCF---201612-1----中间数----C++_Ashen_ffm的博客-程序员秘密

试题编号: 201612-1试题名称: 中间数时间限制: 1.0s内存限制: 256.0MB问题描述:问题描述  在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。  给定一个整数序列,请找出这个整数序列的中间数的值。  输入格式  输入的第一行...

非常详细的Docker学习教程_零度anngle的博客-程序员秘密

一、Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平台 -- Docker Hub Docker 使用客户端-服务器 (C/S) 架构模式。Docker 客户端会与 Docker 守护进程进行通信。Docker 守护进程会处理复杂繁重的任务,例如建立、

随便推点

arcgis API参考(Reference)之 Graphic, GraphicsLayer_arcgis graphicslayer_盛夏晚秋的博客-程序员秘密

一、引用使用Vue+arcgis4.18怎么使用map我就不多说了,自己去官网看import Point from "@arcgis/core/geometry/Point";import GraphicsLayer from "@arcgis/core/layers/GraphicsLayer";二、Graphics为什么先写Graphics,因为Graphics可以挂(个人的理解)在GraphicsLayer上1,属性其实不搞那些花里胡哨的只需要var polylineGr

python中astype用法_浅谈python 中的 type(), dtype(), astype()的区别_上官晓栋的博客-程序员秘密

如下所示:函数说明type()返回数据结构类型(list、dict、numpy.ndarray 等)dtype()返回数据元素的数据类型(int、float等)备注:1)由于 list、dict 等可以包含不同的数据类型,因此不可调用dtype()函数2)np.array 中要求所有元素属于同一数据类型,因此可调用dtype()函数astype()改变np.array中所有数据元素的数据类型。备注...

layui载入html,在Layui tab控件中载入外部HTML页面的方法_七喜_前端开发者_筱禾酱的博客-程序员秘密

目前,潜入外部网页的方式,主要有3种:iframe方式ajax方式ajax加载数据后,直接赋予 externalHtml.innerHTML 即可。script脚本方式hao123百度layui的button百搭按钮以上这篇在layui tab控件中载入外部开发者。...

单向链表基本操作(C语言实现)_c语言单向链表实现_l-jobs的博客-程序员秘密

最近学数据结构的链表,就把单向链表的基本操作列了出来,包括链表的建立,链表的插入和删除,链表的查询和遍历,链表的销毁,链表的排序与逆序,链表的合成。1.链表的建立一般有两种方式建立链表,头插法和尾插法。使用头插法建立的链表步骤少,但输出顺序和输入的相反,而尾插法建立链表多了一个不存在数据域的头节点和尾节点,但是输出是正序的,而且头节点便于我们的其余操作,所以我们一般用尾插法建链表。

java主要编程工具_dfywlme7915的博客-程序员秘密

工欲善其事必先利其器,要想学好Java编程这门语言,选择一款好用顺手的开发工具是必不可少的。要想全面了解java开发工具,我们首先需要先了解一下java程序的开发过程,通过这个过程我们能够了解到java开发都需要用到那些工具。从上图中我们能看到一个完整的java项目的开发包括很多的环节,每个环节都需要用到不同的开发工具。当然了,在实际java项目开发中,不可能一个人身兼数职,...

推荐文章

热门文章

相关标签