使用 HmacSHA1 加密算法生成 signature 值
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Formatter;
class SignatureGenerator {
public static String generateSignature(String data, String accessKey) {
try {
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec secretKey = new SecretKeySpec(accessKey.getBytes(), "HmacSHA1");
mac.init(secretKey);
byte[] hmacData = mac.doFinal(data.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : hmacData) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (NoSuchAlgorithmException | InvalidKeyException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
String data = "{\"accessid\":\"abcdefghijklmn\",\"HH\":null,\"CODE\":\"2000\",\"STARTDATE\":\"2024-07-01\",\"PASSWORD\":\"0000\",\"timestamp\":\"20220608154653\",\"ENDDATE\":\"2024-08-29\"}";
String accessKey = "nmlkjihgfedcba";
String signature = generateSignature(data, accessKey);
System.out.println("Signature: " + signature);
}
}