java HmacSHA1 计算

java HmacSHA1 计算此处使用 SecretKeySpe 构造 key 用 Mac 对象初始化构造的 key 对象 MAC 算法主要集合了 MD 和 SHA 两大系列消息摘要算法 MD 系列的算法有 HmacMD2 HmacMD4 HmacMD5 三种算法 SHA 系列的算法有 HmacSHA1 HmacSHA224 HmacSHA256 HmacSHA384 HmacSHA512 五种算法 hmac 签名算法

此处使用SecretKeySpec 构造 key,用Mac对象初始化构造的key对象,

/ * hmac+签名算法 加密 * @param content 内容 * @param charset 字符编码 * @param key 加密秘钥 * @param hamaAlgorithm hamc签名算法名称:例如HmacMD5,HmacSHA1,HmacSHA256 * @return */ public static String getHmacSign(String content, String charset,String key,String hamaAlgorithm){ byte[] result = null; try { //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称 SecretKeySpec signinKey = new SecretKeySpec(key.getBytes(), hamaAlgorithm); //生成一个指定 Mac 算法 的 Mac 对象 Mac mac = Mac.getInstance(hamaAlgorithm); //用给定密钥初始化 Mac 对象 mac.init(signinKey); //完成 Mac 操作 byte[] rawHmac; rawHmac = mac.doFinal(content.getBytes(charset)); result = Base64.encodeBase64(rawHmac); } catch (NoSuchAlgorithmException e) { System.err.println(e.getMessage()); } catch (InvalidKeyException e) { System.err.println(e.getMessage()); } catch (IllegalStateException | UnsupportedEncodingException e) { System.err.println(e.getMessage()); } if (null != result) { return new String(result); } else { return null; } } public static void main(String[] args) { String hmacSign = getHmacSign("testjoiaj", "UTF-8", "gail", "HmacMD5"); String hmacSign2 = getHmacSign("testjoiaj", "UTF-8", "gail", "HmacSHA1"); String hmacSign3 = getHmacSign("testjoiaj", "UTF-8", "gail", "HmacSHA256"); System.out.println(hmacSign); System.out.println(hmacSign2); System.out.println(hmacSign3); }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232237.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何使用Powershell脚本监控Exchange2010(前言)

    如何使用Powershell脚本监控Exchange2010(前言)

    2021年8月15日
    60
  • VirtualBox 主机ping不通虚拟机的解决办法

    VirtualBox 主机ping不通虚拟机的解决办法虚拟机与主机之间相互ping通有一个问题,就是虚拟机能够ping通主机本地主机ping不通虚拟机:解决办法:1、如果虚拟机有两个网卡将虚拟机网卡2的连接方式改成桥接即可:⚠️要将虚拟机重启,否则是成功不了的(重要)然后就能够通过网卡2进行连接:2、虚拟机只有一个网卡也是将网卡1改成桥接模式⚠️要将虚拟机重启,否则是成功不…

    2025年6月9日
    5
  • ubuntu卸载cuda10.2_dpkg强制卸载软件

    ubuntu卸载cuda10.2_dpkg强制卸载软件一、参考资料CUDA、CUDNN在Ubuntu下的安装及配置二、注意事项用deb方式安装CUDA,会附带安装显卡驱动;用run方式安装CUDA,需要提前安装好显卡驱动;安装显卡驱动的时候,最好安装高版本的,这样不会受cuda版本的影响;三、run方式卸载用run方式安装的CUDA和驱动#uninstallcuda#第一行命令不要忘记要加上perl命令,要不然会报错sudoperl/usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl

    2025年9月1日
    6
  • 看懂 Serverless,这一篇就够了

    看懂 Serverless,这一篇就够了文章目录1.无服务器(Serverless)计算是什么2.理解Serverless技术—FaaS和BaaS2.1Faas(FunctionasaService,函数即服务)2.2Baas(BackendasaService,后端即服务)3.无服务器(Serverless)计算如何工作?4.无服务器(Serverless)适用于哪些场景?4.1场景一:应用负载有显著的波…

    2022年6月19日
    41
  • 两个正序数组 找中位数_两个有序数组的中位数

    两个正序数组 找中位数_两个有序数组的中位数原题连接给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示例 3:输入:nums1 = [0,

    2022年8月8日
    6
  • python读取excel并写入excel_python如何读取文件夹下的所有文件

    python读取excel并写入excel_python如何读取文件夹下的所有文件(1)方法一:#!/usr/bin/envpython3fromdatetimeimportdatefromxlrdimportopen_workbook,xldate_as_tuplefromxlwtimportWorkbookoutput_workbook=Workbook()output_worksheet=output_workbook.add_s

    2022年10月2日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号