我正在按照以下步骤使用 SHA1 算法使用两个不同的 API 计算 HMAC,并且两个输出都不匹配。
1) 我首先通过BouncyCastle API使用 SHA1 算法为给定的数据和密钥计算 HMAC 。
2) 我们使用PKCS11 API(Pkcs11Interop)为 HSM(Thales) 中的数据和密钥计算 HMAC 。
当我们比较 1 和 2 的结果时,数据不匹配。
充气城堡代码:
HMAC hmac = HMACSHA1.Create();
String key = "BC55B4580589775F887890A7ACA5E624";
hmac.Key = Util.HexStringToByteArray(key);
byte[] modInput = Util.HexStringToByteArray("000000000000000000000006000080012b0601040181e438010102041603");
String ki = Util.ByteArrayToHexString(hmac.ComputeHash(modInput));
PKCS11 代码:
ObjectHandle k = FindObjectByLabel(keyLabel);//same key as above
Mechanism m = new Mechanism(CKM.CKM_SHA_1_HMAC);
**//We have verified that both key and data value are the same**
return mSession.Connection.Sign(m, k, data);
有人可以帮忙吗?