HMAC-SHA256
Sử dụng kỹ thuật HMAC-SHA256 để tạo chữ ký xác thực. Quy trình tạo chữ ký xác thực bao gồm:
- Bước 1: Sử dụng giải thuật
AES
và encryptKey đã có để mã hóa data:encryptedData = AES(data, encryptKey)
- Bước 2: Tạo chữ ký.
- Khởi tạo chuỗi với định dạng:
{clientId}|{timestamp}|{encryptedData}
- Sử dụng HMAC-SHA256 và secretKey để băm chuỗi trên. Chuỗi băm trả về là chữ ký xác thực.
- Khởi tạo chuỗi với định dạng:
Code chi tiết:
String encryptData = SecurityUtils.encryptAES(jsonString, encryptKey);
String signature = hmacSHA256Encode(String.format("%s|%s|%s", clientId, timestamp, encryptData), secretKey);
Hàm băm:
public static String hmacSHA256Encode(String data, String secretKey) {
try {
Mac sha256HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
sha256HMAC.init(secretKeySpec);
return Hex.encodeHexString(sha256HMAC.doFinal(data.getBytes(StandardCharsets.UTF_8)));
} catch (Exception e) {
log.error("sign error: {}", e.getMessage());
return null;
}
}