设置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. IDEA_Shelve代码搁置与恢复

    日常开发中,经常会遇到在当前分支开发到一半,但是需要Checkout上个版本解决bug或调查问题的情况.这个时候,我们是将代码提到Push远程?还是直接Rollback? 最理想的做法,就是将当前的开 ...

  2. Promise 解析

    Promise 由于js的语言特性(用户交互)和工作环境(浏览器脚本),决定了它是单线程工作,所以两段脚本不能同时运行,但为了实现功能,所以人们使用了事件和回调来初步解决这个问题,例如(addEven ...

  3. badger 一个高性能的LSM K/V store

    原文:https://colobu.com/2017/10/11/badger-a-performant-k-v-store/ github地址:https://github.com/dgraph-i ...

  4. openvswitch 监听端口变化

    命令: ovsdb-client monitor Interface name,ofport,external_ids --format=json 运行效果: [root@ostack1 ~]# ov ...

  5. 你真的了解 get 和 post 的区别么

    get 和 post 是两种最常用的 HTTP 请求方法,要说它们两个的区别,相必接触过 WEB 开发的人都能够说出一二. 如果我问你这个问题,你的内心充满了自信和喜悦.你可能已经写过无数个 GET ...

  6. flink创建视图的几种方式

    import org.apache.flink.api.common.typeinfo.BasicTypeInfo; import org.apache.flink.api.java.typeutil ...

  7. Java高级特性——反射机制(第三篇)

    获取类运行时的结构 通过反射获取运行时类的完整结构 Field.Method.Constructor.Superclass.Interface.Annotation >实现的全部接口 >所 ...

  8. Android开发工程师面试题之handler详解。android程序员,android开发面试资料,详解

    Message:消息:其中包含了消息ID,消息对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理 Handler:处理者:负责Message发送消息及处理.Handler ...

  9. C. News Distribution(并查集)

    In some social network, there are nn users communicating with each other in mm groups of friends. Le ...

  10. three.js尝试(一)模拟演唱会效果

    工作闲暇之余,偶然翻到了Three.js的官网,立刻被它酷炫的案例给惊艳到了,当即下定决心要试验摸索一番,于是看demo,尝试,踩坑,解决问题,终于搞定了,一个模拟演唱会场景. 主角围绕一个钢管在舞动 ...