首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中的pkcs11 cmac计算

java中的pkcs11 cmac计算
EN

Stack Overflow用户
提问于 2021-02-02 04:16:27
回答 1查看 152关注 0票数 0

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

代码语言:javascript
复制
            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);

结果如下:

代码语言:javascript
复制
key                   = 00000000000000000000000000000000
data                  = 00000000000000000000000000000000
AES_CBC(key, data)    = 66E94BD4EF8A2C3B884CFA59CA342B2E
cmac(key, data)       = 66E94BD4EF8A2C3B884CFA59CA342B2E
expected cmac         = 763CBCDE81DF9131BF897712C088EDAD

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

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-02-02 05:42:08

您的代码使用CBC-MAC的AES_MAC_GENERAL机制(请参阅herehere)。

对于AES-CMAC,您应该使用CKM_AES_CMAC/CKM_AES_CMAC_GENERAL (参见here)。

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

祝你的项目好运!

EDIT>

我现在还不能访问IAIK wrapper,但是考虑到javadoc,你可能想尝试一下:

代码语言:javascript
复制
CK_MECHANISM mec = new CK_MECHANISM();
mec.mechanism = PKCS11Constants.CKM_AES_CMAC_GENERAL;
mec.pParameter = new MacGeneralParameters(16L).getPKCS11ParamsObject();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65999536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档