设置HAMC插件

postman模拟请发发送:

 Java代码:

HMAC-SHA-256工具类

 1 import java.security.InvalidKeyException;
2 import java.security.NoSuchAlgorithmException;
3 import java.util.Formatter;
4 import javax.crypto.Mac;
5 import javax.crypto.spec.SecretKeySpec;
6
7 public class HmacSha256Util {
8
9 private static final String HMAC_SHA1_ALGORITHM = "HmacSHA256";
10 private static String toHexString(byte[] bytes) {
11 Formatter formatter = new Formatter();
12 for (byte b : bytes) {
13 formatter.format("%02x", b);
14 }
15 return formatter.toString();
16 }
17
18 public static String signature(String data, String key) throws NoSuchAlgorithmException, InvalidKeyException {
19 SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
20 Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
21 mac.init(signingKey);
22 return toHexString(mac.doFinal(data.getBytes()));
23 }
24
25 public static byte[] signatureReturnBytes(String data, String key) throws NoSuchAlgorithmException, InvalidKeyException {
26 SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
27 Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
28 mac.init(signingKey);
29 return mac.doFinal(data.getBytes());
30 }
31
32 }

SHA-256 工具方法:

public static String SHA256(String param) {
if (StringUtils.isBlank(param)) {
throw new IllegalArgumentException("param can not be null");
}
try {
byte[] bytes = param.getBytes("utf-8");
final MessageDigest md = MessageDigest.getInstance("SHA-256");
md.reset();
md.update(bytes);
final Base64 base64 = new Base64();
final byte[] enbytes = base64.encode(md.digest());
return new String(enbytes);
} catch (final NoSuchAlgorithmException e) {
throw new IllegalArgumentException("unknown algorithm SHA-256");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}

测试:

 1 public class Test01 {
2
3 @Test
4 public void getSHA256() throws UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException{
5 StringBuilder stb = new StringBuilder();
6 String content = stb.append("Date: ").append(getTime()).append("\n").append("abc: ").append("123456").append("\n").append("Digest: SHA-256=").append(getBody()).toString();
7 System.out.println("签名前的数据:"+content);
8 String secret="kOI6ZHLGdgd2GB8osYZSl7QDCrHzAFg1";
9 String signature2 = new String(Base64.getEncoder().encode(HmacSha256Util.signatureReturnBytes(content, secret)), "US-ASCII");
10 System.out.println("显示指定编码[推荐] signature:"+signature2);
11
12 }
13 public String getTime() {
14 Date d=new Date();
15 DateFormat format=new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
16 format.setTimeZone(TimeZone.getTimeZone("GMT"));
17 String hdate = format.format(d);
18 return hdate;
19 }
20
21
22 public String getBody() throws UnsupportedEncodingException {
23 String body = "{\"item\":[{\"address\":\"hpSg3NXvBAdaDcaeGQiPFF9tciW9BmcQv8Qm\"}]}";
24 String sha2562 = Sha256Util.SHA256(body);
25 return sha2562;
26 }
27
28 }

最经过postman调试成功访问

KONGA下的HAMC插件功能 --JAVA代码实现的更多相关文章

  1. AJPFX编写cmd界面下一键编译、执行java代码的bat脚本

    此脚本适合刚接触java的同学,在cmd界面下用jc取代 复杂的  javac *.java + java main使用说明:把脚本内容复制到txt文本中,修改后缀名为.bat,运行一次即可完成配置, ...

  2. springmvc+mybatis用多选框批量删除的功能Java代码

    今天写了一个批量删除的功能,在后台传值过程中一直出错,最终还是请教了北京的一位高手帮我解决的,在此首先要好好感谢他,以后我有幸能帮助别人的话,决不推辞. 废话不说,直接进入正题,我会将在编写过程中出现 ...

  3. Findbug插件静态java代码扫描工具使用

    本文转自http://blog.csdn.net/gaofuqi/article/details/22679609 感谢作者 FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具. ...

  4. Java代码质量检查checkstyle, pmd, cpd, p3c,findbugs, jacoco, sonarquebe以及和Jenkins集成

    概述 又搞一边质量扫描插件,之前做过一遍,然后后面各种忽略,然后就放弃了,所以,应该寻找一种方法,循序渐进的实施.本次将实施一个基本的打包扫描方案,包含 checkstyle 固定团队编码风格,固定命 ...

  5. 从 Java 代码逆向工程生成 UML 类图和序列图

    from:http://blog.itpub.net/14780914/viewspace-588975/ 本文面向于那些软件架构师,设计师和开发人员,他们想使用 IBM® Rational® Sof ...

  6. eclipse下使用git上传(下载)代码至(从)github

    eclipse下使用git插件上传代码至github 1.eclipse下安装git 正常情况下,eclipse 是自带 git 插件的,那么即可跳至步骤1的最后一小步,配置 git . 如果十分悲剧 ...

  7. Eclipse下使用GDT插件无法登陆GAE & GDT无法上传JAVA代码

    今天更新github主页的过程中,想使用GAE部署一个Java Web服务来更好的支持网站动态性(关键是利用了免费的GAE资源),结果遇到了2个大问题. 1.GDT插件无法登陆GAE账户 错误1:登陆 ...

  8. 提高Java代码质量的Eclipse插件之Checkstyle的使用详解

    提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代 ...

  9. 提高Java代码质量的Eclipse插件之Checkstyle的使用具体解释

    CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发者遵守某些编码规范的工具.它可以自己主动化代码规范检查过程.从而使得开发者从这项重要可是枯燥的任务中解脱出来. Ch ...

随机推荐

  1. docker-compose 官网下载特别慢怎么办?

    docker compose 官放推荐的下载方式是这样的: sudo curl -L "https://github.com/docker/compose/releases/download ...

  2. 牛客网数据库SQL实战解析(41-50题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  3. Mac上Safari不能关键字搜索

    今天打开Mac,用Safari浏览器搜索的时发现不能进行关键字搜索,搜索栏只能打开网址. 现在问题已经解决,只要删除Safari上的cookies就可以了.操作步骤如下: Safari ->pr ...

  4. webgl实现径向模糊

    径向模糊简介 径向模糊,是一种从中心向外呈幅射状,逐渐模糊的效果. 因此径向模糊经常会产生一些中心的发散效果,在PS中同样也有径向模糊的滤镜效果. 径向模糊通常也称为变焦模糊.径向模糊(Radial ...

  5. Java线上问题排查神器Arthas快速上手与原理浅谈

    前言 当你兴冲冲地开始运行自己的Java项目时,你是否遇到过如下问题: 程序在稳定运行了,可是实现的功能点了没反应. 为了修复Bug而上线的新版本,上线后发现Bug依然在,却想不通哪里有问题? 想到可 ...

  6. Windows Server 2012 R2 时间同步

    最近的项目两台服务器都是Windows Server 2012的系统,需要做时间同步,现在是一些从网上搜罗的步骤总结. 具体就是配置windows的注册表: 一.服务端配置 (NTP服务器,客户端将根 ...

  7. 初识ABP vNext(7):vue身份认证管理&租户管理

    Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 目录 前言 开始 按钮级权限 身份认证管理 R/U权限 权限刷新 租户管理 租户切换 效果 最后 前言 上一篇介绍了vue+ABP国际化 ...

  8. 模拟退火详解&P1433题解

    前排提示:LZ是个菜比,有可能有讲的不对的地方,请在评论区指出qwq 0.基本思想 模拟退火其实没有那么高大上.说白了就是初始化一个"温度".每次随机乱选一个方案,如果比以前的方案 ...

  9. include标签—引用文件路径

    今天给大家讲解的是include标签,在打代码的时候总会出现一些重复的样式,这个时候就可以用include标签来减少打代码的次数. 文件名index.html,代码: {% from 'macros/ ...

  10. 09.redis 哨兵主备切换时数据丢失的解决方案

    一.两种数据丢失的情况 1. 异步复制导致的数据丢失   因为master->slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机了,此时这些部分数据就丢失了 2 ...