项目对外提供接口时都会要求调用方根据服务器制定的加密规则传入签名字符串,再进行校验来判断请求来源的合法性,而SHA
加密是比较常用的方法。
import java.security.MessageDigest;
public class SHAEncryptUtil {
public final String SHA256 = "SHA-256";
public final String SHA512 = "SHA-512";
/**
* SHA256加密
* @param str 需要加密的内容
* @return String
*/
public String getSHA256Str(String str) {
return encryptSHA(str, SHA256);
}
/**
* SHA512加密
* @param str 需要加密的内容
* @return String
*/
public String getSHA512Str(String str) {
return encryptSHA(str, SHA512);
}
/**
* SHA加密方法
* @param str 需要加密字符内容
* @param encType 加密类型
* @return
*/
private String encryptSHA(String str, String encType) {
String encryptStr = null;
try {
// 创建加密对象,传入加密类型
MessageDigest messageDigest = MessageDigest.getInstance(encType);
// 传入加密字符串
messageDigest.update(str.getBytes("UTF-8"));
byte[] bytes = messageDigest.digest();
StringBuffer strBufferHex = new StringBuffer();
for (int i = 0; i < bytes.length; i++) {
// byte转16进制
String hexStr = Integer.toHexString(bytes[i] & 0xFF);
if (hexStr.length() == 1) {
strBufferHex.append("0");
}
strBufferHex.append(hexStr);
}
encryptStr = strBufferHex.toString();
} catch (Exception e) {
e.printStackTrace();
}
return encryptStr;
}
}
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载