我有以下代码来使用密码计算 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?
只是将其添加为“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