
cn.hnhtxx.sdk.util.SignatureUtils Maven / Gradle / Ivy
The newest version!
package cn.hnhtxx.sdk.util;
import cn.hnhtxx.exception.BusinessException;
import cn.hnhtxx.sdk.pojo.query.SdkQuery;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
/**
* @author huangshuo
* @date 2023-11-02 17:09
*/
public class SignatureUtils {
private static final String ALGORITHM = "HmacSHA256";
/**
* 生成签名
*
* @param sdkQuery
* @return
*/
public static String getSignature(SdkQuery sdkQuery) {
String signature = sdkQuery.getIdentity() + sdkQuery.getInterfacetype() + sdkQuery.getZipCode()
+ sdkQuery.getEncryptCode() + sdkQuery.getContent() + sdkQuery.getSignType();
signature = HMACSHA256(signature.getBytes(), sdkQuery.getSecretKey().getBytes());
return signature;
}
/**
* 签名
*
* @param data
* @param key
* @return
*/
public static String HMACSHA256(byte[] data, byte[] key) {
try {
SecretKeySpec signingKey = new SecretKeySpec(key, ALGORITHM);
Mac mac = Mac.getInstance(ALGORITHM);
mac.init(signingKey);
return byte2hex(mac.doFinal(data));
} catch (Exception e) {
throw new BusinessException(e);
}
}
private static String byte2hex(byte[] b) {
StringBuilder hs = new StringBuilder();
String stmp;
for (int n = 0; b != null && n < b.length; n++) {
stmp = Integer.toHexString(b[n] & 0XFF);
if (stmp.length() == 1)
hs.append('0');
hs.append(stmp);
}
return hs.toString().toUpperCase();
}
/**
* 验签
*
* @param message
* @param secret
* @param signature
* @return
*/
public static boolean verify(String message, String secret, String signature) {
return signature != null && signature.equals(HMACSHA256(message.getBytes(), secret.getBytes()));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy