我已经获得以下代码来使用密码计算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));
}
但我无法弄清楚如何使用密码验证它,我正在阅读Java文档here,但我似乎无法找到验证功能或其他任何内容,关于HMAC的部分很短。
如何使用密码验证HMAC?
答案 0 :(得分:0)
只需添加“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