如何验证HMAC java

Cri*_*zly 1 java hmacsha1

我有以下代码来使用密码计算 Hmacs:

public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException 
{
  String password = "password123";
  SecretKeySpec keySpec = new SecretKeySpec(password.getBytes(), "HmacSHA1");

  Mac mac = Mac.getInstance("HmacSHA1");
  mac.init(keySpec);

  byte[] result = mac.doFinal("This is a test string".getBytes());

  System.out.println(new Base64().encodeAsString(result));
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用密码验证它,我正在阅读此处的Java 文档,但我似乎找不到验证函数或任何内容,有关 HMAC 的部分非常短。

如何使用密码验证 HMAC?

yam*_*ami 5

只是将其添加为“Markus W Mahlberg”提到的答案,以便更好地观看。 您只需再次进行散列并检查结果是否匹配。如果两个字符串中的任何一个有最轻微的差异,则哈希将不匹配。如果它们匹配,您就知道两个输入字符串和两个密码都匹配,因为哈希值匹配

https://en.wikipedia.org/wiki/Message_authentication_code https://upload.wikimedia.org/wikipedia/commons/thumb/0/08/MAC.svg/661px-MAC.svg.png