0

我的朋友告诉我使用“HMACSHA256”算法,我使用了以下代码:

SecretKey signingKey = new SecretKeySpec("123".getBytes(), "HMACSHA256");  
    Mac mac = Mac.getInstance("HMACSHA256");  
    mac.init(signingKey);  
    byte[] digest = mac.doFinal("ABCDEF".getBytes());     
    System.out.println("HMA : "+digest.length);

只是想知道:

1)上面的实现看起来是标准的“HMACSHA256”吗?

2)输出(摘要)以 256 位或 16 字节的形式出现。这是否正确。

如果我们使用 HMACSHA256 算法,我们需要多少字节作为输出。

4

1 回答 1

10

HMAC 摘要的输出比特数等于底层算法生成的比特数。

  • 对于 MD5,此位数为 128。
  • 对于 SHA-1,此位数为 160。
  • 对于 SHA-256,如果为 256,则此位数。

您的代码看起来不错,并且正在生成正确的摘要大小。您可以在此处阅读有关加密哈希的更多信息。

于 2012-02-16T13:00:52.897 回答