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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • apache 虚拟主机配置详解_如何配置虚拟主机

    apache 虚拟主机配置详解_如何配置虚拟主机apache2.4部分conf/httpd.conf1,Includeconf/extra/httpd-vhosts.conf,去掉注释;2,DocumentRoot"D:\apachespace",增加注释;3,所有<directory></directory>,增加注释;4,*ServerName :80,增加注释;conf/extra/httpd-vhosts.c…

    2025年12月5日
    2
  • Linux-xsync分发脚本

    Linux-xsync分发脚本xsync集群分发脚本(1)需求:循环复制文件到所有节点的相同目录下(2)需求分析:(a)rsync命令原始拷贝:rsync-av/opt/moduleatguigu@hadoop103:/opt/(b)期望脚本:xsync要同步的文件名称(c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)[atguigu@hadoop102~]$echo$PATH/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/ho

    2022年5月15日
    31
  • c语言的stl库_c语言string库

    c语言的stl库_c语言string库今天推荐一个函数库glib注意不是glibc https://developer.gnome.org/glib/一直在抱怨,标准C中为什么没有类似于STL的标准容器,让全世界的程序员在数以万次的重复实现它们。不过,还算走运,有了glib,恶梦在此终结了。glib提供了动态数组、单/双向链表、哈希表、多叉树、平衡二叉树、字符串等常用容器,完全是面向对象设计的,实现得非常精致。

    2022年10月15日
    1
  • ajax实例教程_creo实例教程

    ajax实例教程_creo实例教程一、什么是Ajax?Ajax=Javascript和xml。Ajax是一种创建快速动态网页的技术。通过在后台与服务器进行少量的数据交换,Ajax可以使网页进行异步刷新,这意味着可以在不加载整个页面的情况下局部更新网页的某个部分。这么好的友好后台交互方式使Ajax技术迅速的流行起来。传统的页面如果不使用Ajax需要重新加载整个页面来实现更新内容。二、Ajax的语法步骤。

    2022年8月16日
    7
  • 文件包含漏洞

    0x00前言在我们文件上传的时候,如果是白名单通常会配合到文件包含和解析漏洞来getshell,那么这里先来说说文件包含。0x01 文件包含漏洞在php当中的文件包含的内容都会被当作php

    2021年12月11日
    45
  • windows 2008 server 域管理命令

    windows 2008 server 域管理命令

    2022年3月8日
    48

发表回复

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

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