Java加密 HMACSHA1 加密算法
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 加密算法相关推荐
- java的HMACSHA1加密算法
前期做一个和Q+相关的项目时,双方要进行一些数据的校验,对方规定的校验规则是通过hmac-sha1算法(fcg语言采用hash_hmac方法),并给出了一个例子:sig=hash_hmac(" ...
- JAVA加密--AES加密算法JAVA实现及使用中的各种坑,超实用
1. AES 1.1. 概念 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准. 这个标准用 ...
- java 实现HMAC-SHA1加密算法
使用HmacSHA1哈希运算消息认证码 主要用于两端知道同一个秘钥,通过该秘钥进行消息数据认证 private static final String HMAC_SHA1 = "HmacSH ...
- Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
[最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...
- Java 加密 AES 对称加密算法
版权声明:本文为博主原创文章,未经博主允许不得转载. [AES] 一种对称加密算法,DES的取代者. 加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES R ...
- 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 ...
- Java 加密解密之对称加密算法PBE
JAVA 加密解密系列 Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64加密解密 Java 加密解密之消息摘要算法(MD5 SHA MAC) Java 加密 ...
- Java加密技术(四)——非对称加密算法RSA
转自:http://snowolf.iteye.com/blog/381767 接下来我们介绍典型的非对称加密算法--RSA RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能 ...
- java js 非对称加密算法_Java加密技术(四)——非对称加密算法RSA
Java非对称加密算法rsa 接下来我们介绍典型的非对称加密算法--RSA RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字 ...
最新文章
- 如何使用LocalBroadcastManager?
- 住过一晚两万的ICU后,我还是建议你不要轻易买保险
- 关于Android的一些设计【转】
- php读取客户机本地时间,PHP如何获取客户端时区以及准确显示所在地时间
- 20170117小测
- linux 删除sysadm用户,linux 用户和组命令整理及详细介绍
- [ 转载 ] Java线程面试题 Top 50 (转载)
- 广播的接收与U盘广播
- 10 个 Python 项目简单又超有趣
- VB.Net - 环境设置
- 计算机组装与维护李毅,青春力量 | 优秀校友李毅专访
- 检测卡常见错误代码:12、12、2B、2C、2D、2E、2F、30、31、32、33、34、35、36、37、38、39、3A
- win7/win10系统防火墙禁止单个应用联网步骤
- Transformer课程 业务对话机器人Rasa 3.x 生成自然语言理解NLU数据
- 七年级计算机上册知识题,Word综合应用复习七年级信息技术上册教案
- BLUES吉他学习笔记004 bluesrv[8]
- 【LTE】Qualcomm LTE Packets log 分析(三)LTE Access Stratum Log Analysis
- 录屏储存失败因为5823_为什么屏幕录制失败因为5823
- delphi android 打印机,用delphi控制小票打印机打印图片
- tabIndex的用途