在一个应用程序中,我们使用以下方法在 java 中计算 SHA1Hmac:
SecretKey key = new SecretKeySpec(secret, "HmacSHA1");
Mac m = Mac.getInstance("HmacSHA1");
m.init(key);
byte[] hmac = m.doFinal(data);
后来,在 C# 中验证了 hmac - 在 SmartCard 上 - 使用:
HMACSHA1 hmacSha = new HMACSHA1(secret);
hmacSha.Initialize();
byte[] hmac = hmacSha.ComputeHash(data);
然而,结果却不尽相同。我是否忽略了一些重要的事情?
输入似乎是相同的。这里有一些示例输入:
Data: 546573746461746131323341fa3c35
Key: 6d795472616e73616374696f6e536563726574
Result Java: 37dbde318b5e88acbd846775e38b08fe4d15dac6
Result C#: dd626b0be6ae78b09352a0e39f4d0e30bb3f8eb9
我不介意在两个平台上实现我自己的 hmacsha1,但是使用已经存在的......
谢谢!