首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PBKDF2密钥生成使用pkcs11interop,c#,windows 2010

PBKDF2密钥生成使用pkcs11interop,c#,windows 2010
EN

Stack Overflow用户
提问于 2018-03-22 08:37:05
回答 1查看 210关注 0票数 1

如何在PBKDF2中生成pkcs11interop密钥生成的属性模板。

以下是我的试用代码:

代码语言:javascript
复制
byte[] randomSalt = session.GenerateRandom(20);

objectAttributes.Add(new ObjectAttribute(CKA.CKA_CLASS, CKZ.CKZ_SALT_SPECIFIED));    
objectAttributes.Add(new ObjectAttribute(CKA.CKA_VALUE, randomSalt));    
objectAttributes.Add(new ObjectAttribute(CKA.CKA_CLASS, 1000));
objectAttributes.Add(new ObjectAttribute(CKA.CKA_CLASS, 0x00000004));    
objectAttributes.Add(new ObjectAttribute(CKA.CKA_VALUE, new byte[] { }));    
objectAttributes.Add(new ObjectAttribute(CKA.CKA_VALUE, Encoding.UTF8.GetBytes("password")));

Mechanism mechanism = new Mechanism(CKM.CKM_PKCS5_PBKD2); objectHandle objectHandle = session.GenerateKey(mechanism, objectAttributes);

这样我就得到了CKR_MECHANISM_INVALID异常

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-22 23:10:08

第一个问题是,您试图通过ObjectAttribute-s列表而不是CkPkcs5Pbkd2Params类实例向CkPkcs5Pbkd2Params机制提供参数。要获得更多信息,请看一看PKCS#11 v2.20规范的12.26.9章。

第二个问题是,您的非托管PKCS#11库很可能根本不支持CKM_PKCS5_PBKD2机制,因为通过返回CKR_MECHANISM_INVALID错误,您的非托管PKCS#11库告诉您“向加密操作指定了无效的机制”。可以使用GetMechanismInfo()方法检查是否支持该机制:

代码语言:javascript
复制
if (!slot.GetMechanismList().Contains(CKM.CKM_PKCS5_PBKD2))
    throw new Exception("Unmanaged PKCS#11 library does not support CKM_PKCS5_PBKD2 mechanism");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49423938

复制
相关文章

相似问题

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