Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用nCipherKM解密HSM密钥时出错_Java_Encryption_Hsm - Fatal编程技术网

Java 使用nCipherKM解密HSM密钥时出错

Java 使用nCipherKM解密HSM密钥时出错,java,encryption,hsm,Java,Encryption,Hsm,我正在尝试解密存储在Securestorage文件中的数据库密码。我正在使用nCipherKM HSM安全提供程序,用于解密的密钥加密密钥存储在密钥存储(文件夹)中。当我试图通过传递密钥库密码来加载HSM密钥存储时,它无法加载密钥存储,出现以下异常。不确定此错误的根本原因是什么 代码段: java.security.provider hsm_provider = (java.security.provider)Class.forName("com.ncipher.provider.km.nCip

我正在尝试解密存储在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.provider.km.KMKeyStore.engineLoad()


注意:将此答案发布到一个老问题,希望能帮助遇到同样问题的其他人

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

要修复此问题,请使用下面的代码

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);