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

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

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

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

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

package com.hujl.oauth.signature;import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;public class HMACSHA1 {private static final String MAC_NAME = "HmacSHA1";  private static final String ENCODING = "UTF-8";  /** 展示了一个生成指定算法密钥的过程 初始化HMAC密钥 * @return * @throws Exception* public static String initMacKey() throws Exception {//得到一个 指定算法密钥的密钥生成器KeyGenerator KeyGenerator keyGenerator =KeyGenerator.getInstance(MAC_NAME); //生成一个密钥SecretKey secretKey =keyGenerator.generateKey();return null;}*//** * 使用 HMAC-SHA1 签名方法对对encryptText进行签名 * @param encryptText 被签名的字符串 * @param encryptKey  密钥 * @return * @throws Exception */  public static byte[] HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception   {         byte[] data=encryptKey.getBytes(ENCODING);//根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称SecretKey secretKey = new SecretKeySpec(data, MAC_NAME); //生成一个指定 Mac 算法 的 Mac 对象Mac mac = Mac.getInstance(MAC_NAME); //用给定密钥初始化 Mac 对象mac.init(secretKey);  byte[] text = encryptText.getBytes(ENCODING);  //完成 Mac 操作 return mac.doFinal(text);  }
}

Java加密技术(三)—— HMACSHA1 加密算法相关推荐

  1. Java进阶(七)Java加密技术之非对称加密算法RSA

    Java加密技术(四)--非对称加密算法RSA 非对称加密算法--RSA 基本概念 非对称加密算法是一种密钥的保密方法. 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(priv ...

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

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

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

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

  4. Java加密技术(十一)——双向认证

    对于双向认证,做一个简单的描述.  服务器端下发证书,客户端接受证书.证书带有公钥信息,用于验证服务器端.对数据加密/解密,起到OSI五类服务的认证(鉴别)服务和保密性服务. 这只是单向认证,为什么? ...

  5. Java加密技术(一)—— HMACSHA1 加密算法

    HMACSHA1 是从 SHA1 哈希函数构造的一种键控哈希算法,被用作 HMAC(基于哈希的消息验证代码). 此 HMAC 进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希计算,将所得哈希值 ...

  6. Java | 加密技术 | 摘要加密算法(不含原理)

    一.背景简介 1.1 含义 消息摘要采用单向Hash函数将需加密的明文"摘要"成一串密文,这一串密文亦称为数字指纹(Finger Print).它有固定的长度,且不同的明文摘要成密 ...

  7. c java sha1加密解密_java HMACSHA1加密算法

    package phamos; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; public class HMACSH ...

  8. 【加密技术】Java加密算法

    如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorit ...

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

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

最新文章

  1. http请求过程简要
  2. KNN、MOG2和GMG
  3. 初学Java Web开发,请远离各种框架,从Servlet开发
  4. Java final、static final 讲解
  5. SAP UI5 fullScreenPageRoutes in Component.js
  6. React Native 实现物流进度信息
  7. 设计模式之组合模式(Composite)
  8. 纯数学教程 Page 325 例LXVIII (15) 调和级数发散
  9. iOS中使用SFHFKeychainUtils保存用户密码
  10. SqlServer事务回滚失败
  11. 《21天学通Java(第7版)》—— 2.7 总结
  12. 非华为电脑实现多屏协同、一碰传
  13. Shader Forge中文帮助手册
  14. 集合--List集合练习--集合的嵌套、Random类获取随机数
  15. 谷歌用AI技术预测病患死亡时间 到底是福是祸?
  16. VUE实现页面局部刷新
  17. infor接口调用,okhttp不同版本使用
  18. html5在线预览xml,HTML5教程 5分钟了解XML
  19. 地标海之珠夜色素材高清图片
  20. 自定义实现wcf的用户名密码验证

热门文章

  1. windows如何配置mysql的环境变量
  2. 数字时钟单片机程序c语言,单片机数字时钟C语言程序
  3. 云服务器ECS和云虚拟主机VPS的区别
  4. Torchtext快速入门(一)——Vocab
  5. windows 服务程序和桌面程序集成(一)
  6. Harbor: Harbor卸载安装及基本使用教程
  7. java基础---悲观锁和乐观锁
  8. 算法工程 # 深度学习算法落地最后一公里:工业界中的大规模向量检索
  9. 登录onedrive显示无法连接服务器,Win10打不开OneDrive提示“连接到OneDrive时出现问题”怎么解决?...
  10. fiddler https 抓包