微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java中的pkcs11 cmac计算

如何解决java中的pkcs11 cmac计算

我正在尝试使用 Java 中的 Pkcs11 包装器计算 AES-MAC (RFC 4493)。并且似乎 hsm 发送了 AES-CBC 的最后一个块,这不是预期的结果。 这是我发送 PKCS11 请求的方式:

            CK_MECHANISM mec = new CK_MECHANISM();
                        
            mec.mechanism = Mechanism.AES_MAC_GENERAL.getMechanismCode();
            mec.pParameter = new MacGeneralParameters(16L).getPKCS11ParamsObject();
            
            cryptoki.C_SignInit(ckiSession,mec,key,true);
            Mac = cryptoki.C_Sign(ckiSession,data);

结果如下:

key                   = 00000000000000000000000000000000
data                  = 00000000000000000000000000000000
AES_CBC(key,data)    = 66E94BD4EF8A2C3B884CFA59CA342B2E
cmac(key,data)       = 66E94BD4EF8A2C3B884CFA59CA342B2E
expected cmac         = 763CBCDE81DF9131BF897712C088EDAD

你能帮忙解决这个问题吗?

谢谢!

解决方法

您的代码使用 vscode.window.showInputBox({ placeHolder: "howdy there",validateInput: text => { // vscode.window.showInformationMessage(`Validating: ${text}`); if (text === '123') return null; else { if (text !== '') vscode.window.showInformationMessage(`Invalid: ${ text }. Should be of form...`); return 'Not 123!'; } // return text === '123' ? null : 'Not 123!'; }}); 机制,即 CBC-MAC(参见 herehere)。

对于 AES-CMAC,您应该使用 AES_MAC_GENERAL/CKM_AES_CMAC(请参阅 here)。

请注意,您的 HSM 可能不支持此机制。

祝你的项目好运!

编辑>

我现在无法访问 IAIK 包装器,但考虑到 javadoc,您可能想尝试以下操作:

CKM_AES_CMAC_GENERAL

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。