Как сделать такую шифровку в Java
Python:
import base64
import hmac
from hashlib import sha1
data = '{"hello":"world"}'
mac = hmac.new(
bytes.fromhex("715ffccf8c0536f186bf127a16c14682827fc581"),
data.encode("utf-8"),
sha1
)
signature = base64.b64encode(
bytes.fromhex("01") + mac.digest()
).decode("utf-8")
print(signature) # AU/qFnFOpzz5JEEu6syDDqNg4p54
Как реализовать это на джаве?
Ответы (1 шт):
Автор решения: sirjoga
→ Ссылка
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class A {
public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException {
Charset utf = StandardCharsets.UTF_8;
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(new SecretKeySpec(new BigInteger("715ffccf8c0536f186bf127a16c14682827fc581", 16 ).toByteArray(), "HmacSHA1"));
byte [] a = mac.doFinal("{\"hello\":\"world\"}".getBytes(utf));
byte [] b = new byte[a.length + 1];
System.arraycopy(a, 0, b, 1, a.length);
b[0] = 1;
System.out.println(new String(Base64.getEncoder().encode(b), utf));
// AU/qFnFOpzz5JEEu6syDDqNg4p54
}
}