什么是keyed-HMAC(哈希消息认证码)?以及如何使用java在Web服务中编写HMAC?
答案 0 :(得分:6)
HMAC是用于验证消息真实性的摘要。与md5签名不同,它是使用只有您和接收方知道的密钥生成的,因此不应该由第三方伪造。
为了生成一个,您需要使用一些java.security类。试试这个:
public byte[] generateHMac(String secretKey, String data, String algorithm /* e.g. "HmacSHA256" */) {
SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes(), algorithm);
try {
Mac mac = Mac.getInstance(algorithm);
mac.init(signingKey);
return mac.doFinal(data.getBytes());
}
catch(InvalidKeyException e) {
throw new IllegalArgumentException("invalid secret key provided (key not printed for security reasons!)");
}
catch(NoSuchAlgorithmException e) {
throw new IllegalStateException("the system doesn't support algorithm " + algorithm, e);
}
}