KONGA下的HAMC插件功能 --JAVA代码实现
设置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代码实现的更多相关文章
- AJPFX编写cmd界面下一键编译、执行java代码的bat脚本
此脚本适合刚接触java的同学,在cmd界面下用jc取代 复杂的 javac *.java + java main使用说明:把脚本内容复制到txt文本中,修改后缀名为.bat,运行一次即可完成配置, ...
- springmvc+mybatis用多选框批量删除的功能Java代码
今天写了一个批量删除的功能,在后台传值过程中一直出错,最终还是请教了北京的一位高手帮我解决的,在此首先要好好感谢他,以后我有幸能帮助别人的话,决不推辞. 废话不说,直接进入正题,我会将在编写过程中出现 ...
- Findbug插件静态java代码扫描工具使用
本文转自http://blog.csdn.net/gaofuqi/article/details/22679609 感谢作者 FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具. ...
- Java代码质量检查checkstyle, pmd, cpd, p3c,findbugs, jacoco, sonarquebe以及和Jenkins集成
概述 又搞一边质量扫描插件,之前做过一遍,然后后面各种忽略,然后就放弃了,所以,应该寻找一种方法,循序渐进的实施.本次将实施一个基本的打包扫描方案,包含 checkstyle 固定团队编码风格,固定命 ...
- 从 Java 代码逆向工程生成 UML 类图和序列图
from:http://blog.itpub.net/14780914/viewspace-588975/ 本文面向于那些软件架构师,设计师和开发人员,他们想使用 IBM® Rational® Sof ...
- eclipse下使用git上传(下载)代码至(从)github
eclipse下使用git插件上传代码至github 1.eclipse下安装git 正常情况下,eclipse 是自带 git 插件的,那么即可跳至步骤1的最后一小步,配置 git . 如果十分悲剧 ...
- Eclipse下使用GDT插件无法登陆GAE & GDT无法上传JAVA代码
今天更新github主页的过程中,想使用GAE部署一个Java Web服务来更好的支持网站动态性(关键是利用了免费的GAE资源),结果遇到了2个大问题. 1.GDT插件无法登陆GAE账户 错误1:登陆 ...
- 提高Java代码质量的Eclipse插件之Checkstyle的使用详解
提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代 ...
- 提高Java代码质量的Eclipse插件之Checkstyle的使用具体解释
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发者遵守某些编码规范的工具.它可以自己主动化代码规范检查过程.从而使得开发者从这项重要可是枯燥的任务中解脱出来. Ch ...
随机推荐
- js中的寄生组合继承
function inheritProperty(subType, superType) { function F(){} F.prototype = superType.prototype; sup ...
- 手把手教Linux驱动3-之字符设备架构详解,有这篇就够了
一.Linux设备分类 Linux系统为了管理方便,将设备分成三种基本类型: 字符设备 块设备 网络设备 字符设备: 字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程 ...
- 第3篇 Scrum 冲刺博客(专✌️团队)
目录 一.站立式会议 1.1 会议照片 1.2 成员完成情况 二.项目燃尽图 三.成员代码/文档签入记录 3.1 代码签入 3.2 Issue链接 3.3 CodeReview代码规范文档 四.最新项 ...
- pandas - 异常值处理
异常值概念:是指那些远离正常值的观测,即“不合群”观测.异常值的出现一般是人为的记录错误或者是设备的故障等,异常值的出现会对模型的创建和预测产生 严重的后果.当然异常值也不一定是坏事,有些情况下,通过 ...
- Kubernetes使用Eedpoints连接外部服务端口
Kubernetes使用Eedpoints连接外部服务端口 背景: 在Kubernetes的使用环境中,我们经常要连接外部的一些服务,比如mysql Elasticsearch kafka 等等外部的 ...
- 水滴app
在选择了软件工程专业之后,指导教师也让我们参加到了学长学姐的作业之中来,使用学长学姐们的软件并写出自己的使用评价以及自己的一些小评价. 这体验的是第三十二组学长们的软件,他们的队名是自然选择,他们做的 ...
- 解析WAV音频文件----》生成WAV音频文件头
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i WAV音频文件介绍: WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows3.1操作系统 ...
- Qt QDialog添加最大化和最小化按钮
Qt QDialog添加最大化和最小化按钮(转载) QDialog窗体右上角默认是没有最小化和最大化按钮的. 1.效果 2.上代码 1 // 设置窗体最大化和最小化 2 Qt::WindowFlags ...
- ajax请求默认都是异步请求,怎么变为同步请求
Ajax请求默认的都是异步的 如果想同步 async设置为false就可以(默认是true) var html = $.ajax({ url: "some.PHP", as ...
- 总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇
本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...