当前位置: 首页 > 知识库问答 >
问题:

使用nCipherKM解密HSM密钥时出错

魏楷
2023-03-14

我正在尝试解密存储在SecureStorage文件中的数据库密码。我正在使用nCipherKM HSM安全提供程序,用于解密的密钥加密密钥存储在密钥存储库(文件夹)中。当我尝试通过传递密钥存储库密码来加载HSM密钥存储库时,它无法使用以下异常加载密钥存储库。不确定此错误的根本原因是什么。

代码片段:

java.security.provider hsm_provider = (java.security.provider)Class.forName("com.ncipher.provider.km.nCipherKM").newInstance();  
java.security.Security.addProvider(hsm_provider);  
myKeyStore = KeyStore.getInstance(KeyStore.getDefaulttype,"nCipherKM");  
myKeyStore .load(new FileInputStream(KeyStorePath),pwdOfKeyStore);

例外:

Java语言io。IOException:提供了密码,但所有密钥都受模块保护。在com。ncipher。供应商。公里。KM密钥库。engineLoad()

共有1个答案

暨嘉
2023-03-14

注意:将此答案张贴到一个旧问题上,希望能帮助遇到同样问题的其他人。

根本原因可能是创建密钥库时使用了保护模块密钥的选项。这并不意味着密码短语是可选的,而是意味着它是被禁止的。

要修复,请使用以下代码

java.security.provider hsm_provider = (java.security.provider)Class.forName("com.ncipher.provider.km.nCipherKM").newInstance();  
java.security.Security.addProvider(hsm_provider);  
myKeyStore = KeyStore.getInstance(KeyStore.getDefaulttype,"nCipherKM");  
myKeyStore .load(new FileInputStream(KeyStorePath),null);

注意:如果试图从密钥库提取私钥,也应传入null,如下所示:

PrivateKey privateKey = (PrivateKey)keystore.getKey(KEYSTORE_ALIAS, null);
 类似资料:
  • 我正在使用Safenet HSM(硬件安全模块)来存储我的加密密钥,并且我正在尝试使用JavaAPI和SunPKCS11解包使用RSA加密的密钥(AES/DES)。我想安全地执行此操作,以便无法从HSM中提取解包的AES/DES密钥(就像RSA私钥值是不可见的)。但是,在解包后,解包密钥的值在HSM之外的密钥对象中是可见的。 这是我的代码: 如何告诉代码不要泄露未包装的密钥?我必须在PKCS11配

  • 我正在尝试使用作为一个具有加密功能的文件系统。 我成功地实现了在AWS S3服务器上使用加密密钥(服务器端加密)上传文件。请找到以下工作代码: 对于加密: 代码:InvalidArgument 消息:使用AWS KMS托管密钥指定服务器端加密的请求需要AWS签名版本4。 使用KMS密钥读取对象: 这样做对吗?有什么建议吗?请帮帮忙。

  • 这是可能的还是加密必须共享和使用相同的密钥? 主要目的就是这样。 我将有两个客户端可以发送和接收加密数据到彼此。

  • 我们使用Azure Key Vault加密和解密Blob,以保护我们的文件不受开发人员或任何不想要的访问。 我创建了如下所示的RSA密钥 现在我很少怀疑了

  • 我正在尝试使用KMS和AWS加密SDK加密数据。查看AWS文档中提供的示例,似乎没有地方可以显式设置数据键。 使用由KMS生成的数据密钥使用AWS加密SDK加密数据的推荐方法是什么?