31 lines
1.2 KiB
Java
31 lines
1.2 KiB
Java
|
package com.example.studyapp.update;
|
||
|
|
||
|
import javax.crypto.Mac;
|
||
|
import javax.crypto.spec.SecretKeySpec;
|
||
|
import java.nio.charset.StandardCharsets;
|
||
|
|
||
|
public class ArmCloudSignatureV2 {
|
||
|
public static final String ALGORITHM = "HmacSHA256";
|
||
|
public static final String SECRET_KEY = "gz8f1u0t63byzdu6ozbx8r5qs3e5lipt";
|
||
|
public static final String SECRET_ID = "3yc8c8bg1dym0zaiwjh867al";
|
||
|
|
||
|
public static String calculateSignature(String timestamp, String path, String body) throws Exception {
|
||
|
String stringToSign = timestamp + path + (body != null ? body : "");
|
||
|
Mac hmacSha256 = Mac.getInstance(ALGORITHM);
|
||
|
SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_ID.getBytes(StandardCharsets.UTF_8), ALGORITHM);
|
||
|
hmacSha256.init(secretKeySpec);
|
||
|
byte[] hash = hmacSha256.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
|
||
|
return bytesToHex(hash);
|
||
|
}
|
||
|
|
||
|
private static String bytesToHex(byte[] bytes) {
|
||
|
StringBuilder hexString = new StringBuilder();
|
||
|
for (byte b : bytes) {
|
||
|
String hex = Integer.toHexString(0xff & b);
|
||
|
if (hex.length() == 1) hexString.append('0');
|
||
|
hexString.append(hex);
|
||
|
}
|
||
|
return hexString.toString();
|
||
|
}
|
||
|
}
|