我按照以下步骤使用两个不同的API使用SHA1算法计算HMAC,并且两个输出都不匹配。
1)我首先使用SHA1算法通过 BouncyCastle API 计算给定数据和密钥的HMAC。
2)我们使用 PKCS11 API(Pkcs11Interop)计算HSM(Thales)内的数据和密钥的HMAC。
当我们比较1和2的结果时,数据不匹配。
Bouncy Castle代码:
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);
有人可以帮忙吗?