#java #web-services #restful-authentication
#java #веб-сервисы #restful-аутентификация
Вопрос:
что такое keyed-HMAC (код аутентификации хэш-сообщения)? И как написать HMAC в веб-службе, используя Java?
Комментарии:
1. Что касается первой части вашего вопроса, constult en.wikipedia.org/wiki/Message_authentication_code
Ответ №1:
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);
}
}