You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.0 KiB
38 lines
1.0 KiB
2 years ago
|
package com.ynxbd.common.helper.common;
|
||
|
|
||
|
import javax.crypto.Mac;
|
||
|
import javax.crypto.spec.SecretKeySpec;
|
||
|
import java.nio.charset.StandardCharsets;
|
||
|
|
||
|
/**
|
||
|
* HMAC算法
|
||
|
*/
|
||
|
public class HMACHelper {
|
||
|
|
||
|
public static String sha256(String data, String key) {
|
||
|
try {
|
||
|
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
|
||
|
|
||
|
SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
|
||
|
|
||
|
sha256_HMAC.init(secret_key);
|
||
|
|
||
|
byte[] array = sha256_HMAC.doFinal(data.getBytes(StandardCharsets.UTF_8));
|
||
|
|
||
|
StringBuilder sb = new StringBuilder();
|
||
|
|
||
|
for (byte item : array) {
|
||
|
sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));
|
||
|
}
|
||
|
return sb.toString();
|
||
|
} catch (Exception e) {
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
public static void main(String[] args) {
|
||
|
System.out.println(sha256("123", "1"));
|
||
|
}
|
||
|
}
|