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