我想在Python这行代码翻译:HMAC SHA-384在Java中
signature = hmac.new("1234abcd", b64, hashlib.sha384).hexdigest()
我试图得到一个字符串的哈希值,使用SHA-384的秘密密钥。但是,我试图做这个Java,有谁知道如何做到这一点?
此外,我被要求一个随机数。对此有什么要求?
我想在Python这行代码翻译:HMAC SHA-384在Java中
signature = hmac.new("1234abcd", b64, hashlib.sha384).hexdigest()
我试图得到一个字符串的哈希值,使用SHA-384的秘密密钥。但是,我试图做这个Java,有谁知道如何做到这一点?
此外,我被要求一个随机数。对此有什么要求?
您可以使用MessageDigest
与方法字节转换为十六进制:
private static final String HMAC_SHA1_ALGORITHM = "HmacSHA384";
private static String bytesToHex(final byte[] hash) {
final StringBuffer hexString = new StringBuffer();
for (int i = 0; i < hash.length; i++) {
final String hex = Integer.toHexString(0xff & hash[i]);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}
public static void main(final String... args) throws NoSuchAlgorithmException, InvalidKeyException {
final String nonce = "nonce";
final String message = "test string";
SecretKeySpec signingKey = new SecretKeySpec(nonce.getBytes(), HMAC_SHA1_ALGORITHM);
final Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
mac.init(signingKey);
System.out.println(bytesToHex(mac.doFinal(message.getBytes())));
}
HMAC-SHA-384是不一样的SHA-384;看到我下面的评论。 –