HMACSHA1 是从 SHA1 哈希函数构造的一种键控哈希算法,被用作 HMAC(基于哈希的消息验证代码)。 此 HMAC 进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希计算,将所得哈希值与该密钥混合,然后再次应用哈希函数。 输出的哈希值长度为 160 位。

在发送方和接收方共享机密密钥的前提下,HMAC 可用于确定通过不安全信道发送的消息是否已被篡改。 发送方计算原始数据的哈希值,并将原始数据和哈希值放在一个消息中同时传送。 接收方重新计算所接收消息的哈希值,并检查计算所得的 HMAC 是否与传送的 HMAC 匹配。

因为更改消息和重新生成正确的哈希值需要密钥,所以对数据或哈希值的任何更改都会导致不匹配。 因此,如果原始的哈希值与计算得出的哈希值相匹配,则消息通过身份验证。

SHA-1(安全哈希算法,也称为 SHS、安全哈希标准)是由美国政府发布的一种加密哈希算法。 它将从任意长度的字符串生成 160 位的哈希值。

HMACSHA1 接受任何大小的密钥,并产生长度为 160 位的哈希序列。

import org.apache.commons.codec.binary.Base64;import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;public class ForE {private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";/*** 使用 HMAC-SHA1 签名方法对data进行签名** @param data*            被签名的字符串* @param key*            密钥* @return加密后的字符串*/public static String genHMAC(String data, String key) throws Exception{byte[] result = null;//根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称SecretKeySpec signinKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);//生成一个指定 Mac 算法 的 Mac 对象Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);//用给定密钥初始化 Mac 对象mac.init(signinKey);//完成 Mac 操作byte[] rawHmac = mac.doFinal(data.getBytes());result = Base64.encodeBase64(rawHmac);if (null != result) {return new String(result);} else {return null;}}// 这个方法同上面大体一样,可根据自己需求,做相应选择
public static String encryptHmacSHA1(String clearText, String key) {try {Mac mac = Mac.getInstance("HmacSHA1");SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), mac.getAlgorithm());mac.init(secretKeySpec);byte[] bytes = mac.doFinal(clearText.getBytes());String Base64TOencText = Base64.encodeBase64String(bytes);Base64TOencText = Base64TOencText.replaceAll("[\\s*\t\n\r]", "");System.out.println("Base64TOencText:" + Base64TOencText);return Base64TOencText;} catch (NoSuchAlgorithmException var6) {var6.printStackTrace();} catch (InvalidKeyException var7) {var7.printStackTrace();}return null;}/*** 测试* @param args*/public static void main(String[] args) throws Exception{String genHMAC = genHMAC("111", "2222");System.out.println(genHMAC.length()); //28System.out.println(genHMAC);  // O5fviq3DGCB5NrHcl/JP6+xxF6s=}

参考文章 :https://blog.csdn.net/weixin_38756990/article/details/72177367

https://blog.csdn.net/janronehoo/article/details/7590976

Java加密 HMACSHA1 加密算法相关推荐

  1. java的HMACSHA1加密算法

    前期做一个和Q+相关的项目时,双方要进行一些数据的校验,对方规定的校验规则是通过hmac-sha1算法(fcg语言采用hash_hmac方法),并给出了一个例子:sig=hash_hmac(" ...

  2. JAVA加密--AES加密算法JAVA实现及使用中的各种坑,超实用

    1. AES 1.1. 概念 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准. 这个标准用 ...

  3. java 实现HMAC-SHA1加密算法

    使用HmacSHA1哈希运算消息认证码 主要用于两端知道同一个秘钥,通过该秘钥进行消息数据认证 private static final String HMAC_SHA1 = "HmacSH ...

  4. Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

    [最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...

  5. Java 加密 AES 对称加密算法

    版权声明:本文为博主原创文章,未经博主允许不得转载. [AES] 一种对称加密算法,DES的取代者. 加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES R ...

  6. JAVA加密解密→术语、密码分类、OSI与TCP/IP安全体系、Base64、消息摘要算法MD/SHA/MAC、对称加密算法DES/AES/PBE、非对称加密算法DH/RSA/EIGamaI

    术语 密码分类 OSI与TCP/IP安全体系 JAVA安全 Base64算法 消息摘要算法MD 消息摘要算法MD图解 消息摘要算法SHA 消息摘要算法SHA图解 消息摘要算法MAC 消息摘要算法MAC ...

  7. Java 加密解密之对称加密算法PBE

    JAVA  加密解密系列 Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64加密解密 Java 加密解密之消息摘要算法(MD5 SHA MAC) Java 加密 ...

  8. Java加密技术(四)——非对称加密算法RSA

    转自:http://snowolf.iteye.com/blog/381767 接下来我们介绍典型的非对称加密算法--RSA RSA     这种算法1978年就出现了,它是第一个既能用于数据加密也能 ...

  9. java js 非对称加密算法_Java加密技术(四)——非对称加密算法RSA

    Java非对称加密算法rsa 接下来我们介绍典型的非对称加密算法--RSA RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字 ...

最新文章

  1. 如何使用LocalBroadcastManager?
  2. 住过一晚两万的ICU后,我还是建议你不要轻易买保险
  3. 关于Android的一些设计【转】
  4. php读取客户机本地时间,PHP如何获取客户端时区以及准确显示所在地时间
  5. 20170117小测
  6. linux 删除sysadm用户,linux 用户和组命令整理及详细介绍
  7. [ 转载 ] Java线程面试题 Top 50 (转载)
  8. 广播的接收与U盘广播
  9. 10 个 Python 项目简单又超有趣
  10. VB.Net - 环境设置
  11. 计算机组装与维护李毅,青春力量 | 优秀校友李毅专访
  12. 检测卡常见错误代码:12、12、2B、2C、2D、2E、2F、30、31、32、33、34、35、36、37、38、39、3A
  13. win7/win10系统防火墙禁止单个应用联网步骤
  14. Transformer课程 业务对话机器人Rasa 3.x 生成自然语言理解NLU数据
  15. 七年级计算机上册知识题,Word综合应用复习七年级信息技术上册教案
  16. BLUES吉他学习笔记004 bluesrv[8]
  17. 【LTE】Qualcomm LTE Packets log 分析(三)LTE Access Stratum Log Analysis
  18. 录屏储存失败因为5823_为什么屏幕录制失败因为5823
  19. delphi android 打印机,用delphi控制小票打印机打印图片
  20. tabIndex的用途

热门文章

  1. 连续创造OTT赛道新神话,论酷开科技的持久力
  2. java实现尾递归优化,你们都知道递归,尾递归呢?什么又是尾递归优化?
  3. PT_随机变量离散型随机变量及其常见分布(二项分布/Possion分布)
  4. 写一个杀戮尖塔存档修改器
  5. 6-2 找出大于num的最小素数 (16 分)
  6. 脑机接口科普0009——侵入式与非侵入式的优缺点
  7. php 接口token生成验证
  8. 常系数非齐次线性微分方程
  9. MAC 系统环境下无法打开360加固助手的解决
  10. linux daemon启动脚本,Linux 启动脚本