Java的HMAC算法
时间: 2023-12-01 12:30:51 浏览: 107
HMAC.rar_Quick_java hmac
HMAC(Hash-based Message Authentication Code)是一种基于哈希函数和密钥的消息认证码算法。
Java中提供了HMAC算法的实现,可以使用javax.crypto包中的Mac类来实现HMAC算法。下面是一个示例代码:
```
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class HMACExample {
public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException {
String message = "This is a secret message.";
String key = "mysecretkey";
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);
byte[] hash = sha256_HMAC.doFinal(message.getBytes());
System.out.println("HMAC: " + bytesToHex(hash));
}
private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = HEX_ARRAY[v >>> 4];
hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
}
return new String(hexChars);
}
}
```
在上面的示例中,我们使用了HmacSHA256算法来计算消息的HMAC值。需要传入一个密钥,这个密钥可以是任意字符串,但必须是保密的。在本例中,我们使用字符串"mysecretkey"作为密钥。
输出结果为HMAC值的十六进制表示。
阅读全文