Java SHA1的几种实现方式,Java SHA1 签名
在对接微信、接口交互,好多同学喜欢用sha1来做校验。今天也用到了,由于开始的SHA1值不同,所以做了几个版本。
一、原生SHA1版本
import java.security.MessageDigest;
/**
*
* 开发公司:SOJSON在线工具 <p>
* 版权所有:© www.sojson.com<p>
* 博客地址:https://www.sojson.com/blog/ <p>
* <p>
* 说明:<br/>
*
* SHA1
*
* <p>
*
* 区分 责任人 日期 <br/>
* 创建 周柏成 <br/>
*
* @author zhou-baicheng
* @email so@sojson.com
* @version 1.0<br/>
*
*/
public class SHA1 {
private static final char[] HEX = {'0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
private static String getFormattedText(byte[] bytes) {
int len = bytes.length;
StringBuilder buf = new StringBuilder(len * 2);
// 把密文转换成十六进制的字符串形式
for (int j = 0; j < len; j++) {
buf.append(HEX[(bytes[j] >> 4) & 0x0f]);
buf.append(HEX[bytes[j] & 0x0f]);
}
return buf.toString();
}
public static String encode(String str) {
if (str == null) {
return null;
}
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
messageDigest.update(str.getBytes());
return getFormattedText(messageDigest.digest());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
二、Apache 公共包commons-codec
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
Maven官方下载链接:http://search.maven.org/remotecontent?filepath=commons-codec/commons-codec/1.11/commons-codec-1.11.jar
官网介绍链接:http://commons.apache.org/proper/commons-codec/
使用方法:
//这个方法已经过期
String sha1 = DigestUtils.shaHex(bytes);
//使用这个方法
String sha1 = DigestUtils.sha1Hex(bytes);
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/285.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。