我的朋友告诉我使用“HMACSHA256”algo,我使用了以下代码:
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 algo,那么需要多少字节作为输出。
最佳答案
HMAC摘要的输出位数等于底层算法生成的位数。
对于MD5,这个位数是128。
对于sha-1,这个位数是160。
对于sha-256,这个位数是256。
您的代码看起来很好,并且正在生成正确的摘要大小您可以阅读有关加密散列here的更多信息。