SHAHelper.java
package com.util;
/**
* @author wangxiangyu
* @date:2017年10月16日 上午9:00:47
* 类说明:SHA签名算法
*/
public class SHAHelper { private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5","6", "7", "8", "9", "A", "B", "C", "D", "E", "F"}; /**
* 转换字节数组为16进制字串
*
* @param b 字节数组
* @return 16进制字串
*/
public static String byteArrayToHexString(byte[] b) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++) {
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
} private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n = 256 + n;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
} /**
* SHA摘要计算(byte[]).
*
* @param src byte[]
* @throws Exception
* @return byte[] 16 bit digest
*/
public static byte[] SHADigest(byte[] src) throws Exception {
java.security.MessageDigest alg = java.security.MessageDigest
.getInstance("SHA");
return alg.digest(src);
} /**
* SHA摘要计算(String).
*
* @param src String型的目标串
* @throws Exception
* @return String
*/
public static String SHADigest(String src) throws Exception {
return byteArrayToHexString(SHADigest(src.getBytes("UTF-8")));
} /** Test crypt */
public static void main(String[] args) {
try {
// 获得的明文数据
String serialNumber = "0101102010031723101273807F00179E";
String reqBizArgs = "<ReqBizArgs version='1'><test>test</test></ReqBizArgs>";
String key = "8204CDBD76BB69DAE040007F010017A4";
String desStr = serialNumber + reqBizArgs + key;
System.out.println("原文串 desStr = '" + desStr + "'");
// 生成Signature
String signature = SHADigest(desStr);
System.out.println("签名串Signature = '" + signature + "'");
} catch (Exception ex) {
ex.printStackTrace();
}
} }

最新文章

  1. ASP.NET MVC 请求流程:Route
  2. 最简单的方式理解Vue的自定义指令与混合
  3. 1.前端笔记之html
  4. final简介
  5. 性能优化工具 MVC Mini Profiler
  6. 【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
  7. SQL SERVER 导入EXCEL的存储过程
  8. 修改默认的undo_retention参数设置
  9. 每天一个Linux命令(07)--mv命令
  10. LinkedHashMap源码分析及实现LRU
  11. Coursera, Big Data 2, Modeling and Management Systems (week 4/5/6)
  12. 对一个元素 同时添加单击onclick 和 双击ondblclick 触发冲突的解决
  13. 在selenium中使用css选择器进行元素定位
  14. asp.net搭建mybatis开发环境
  15. mongodb添加延时节点
  16. linux命令--cp、tail、cd、mv、history、cd
  17. jquery 弹窗插件 layer 常见接口
  18. js jq 主动触发事件
  19. Tomcat启动报错java.net.AbstractPlainSocketImpl(java/net/AbstractPlainSocketImpl.java:178:-1)Struts在网络复杂情况下启动报错解决办法
  20. Windows下通过Composer安装Yii2

热门文章

  1. C++11新特性——range for
  2. CF986C AND Graph
  3. Asp: 解决脚本输出网页出现乱码情况
  4. csp20151203画图 解题报告和易错地方
  5. 2018年湘潭大学程序设计竞赛 H统计颜色
  6. promise用法详解
  7. redis 启动停止脚本
  8. Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper
  9. POJ - 1584 A Round Peg in a Ground Hole(判断凸多边形,点到线段距离,点在多边形内)
  10. JavaWeb应用和Servlet