2014-11-01 39 views
1

我有下面的代码来计算Hmacs用密码:如何验证HMAC的Java

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

究竟你的意思是验证? – 2014-11-01 14:59:10

+0

@MarkusWMahlberg根据(散列+密码)检查原始字符串以验证完整性 – Crizly 2014-11-01 15:02:46

+3

您只需再次执行散列并检查结果是否匹配。如果其中任何一个字符串有丝毫差异,则散列不匹配。如果它们匹配,则知道两个输入字符串和两个密码匹配,因为哈希匹配。 – 2014-11-01 15:08:16

回答