Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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.security.KeyStore类存储和加载密钥_Java_Security - Fatal编程技术网

如何使用java.security.KeyStore类存储和加载密钥

如何使用java.security.KeyStore类存储和加载密钥,java,security,Java,Security,创建密钥后,如何使用Keystore类的方法存储密钥以及如何加载密钥?存储: KeyStore ks = KeyStore.getInstance("JKS"); ks.setKeyEntry("keyAlias", key, passwordForKeyCharArray, certChain); OutputStream writeStream = new FileOutputStream(filePathToStore); ks.store(writeStream, keystorePas

创建密钥后,如何使用Keystore类的方法存储密钥以及如何加载密钥?

存储:

KeyStore ks = KeyStore.getInstance("JKS");
ks.setKeyEntry("keyAlias", key, passwordForKeyCharArray, certChain);
OutputStream writeStream = new FileOutputStream(filePathToStore);
ks.store(writeStream, keystorePasswordCharArray);
writeStream.close();
注意:除非您传递的是
PrivateKey

装载:

KeyStore ks = KeyStore.getInstance("JKS");
InputStream readStream = new FileInputStream(filePathToStore);
ks.load(readStream, keystorePasswordCharArray);
Key key = ks.getKey("keyAlias", passwordForKeyCharArray);
readStream.close();
阅读

编辑:

请注意,如果要存储SecretKey或使用SunJCE提供程序(Java加密扩展)的任何部分,则需要将密钥库类型设置为JCEKS

KeyStore ks = KeyStore.getInstance("JCEKS");

我不知道密钥别名,但我知道密钥库中只有一个密钥。我使用以下代码加载密钥(如上所示加载密钥库后):

枚举别名=keyStore.alias();
字符串别名=别名。nextElement();
KeyStore.PrivateKeyEntry keyEnt=(KeyStore.PrivateKeyEntry)KeyStore.getEntry(别名,
新的KeyStore.PasswordProtection(keystorePass.toCharArray());
PrivateKey PrivateKey=keyEnt.getPrivateKey();
我添加了一个关于如何加载私钥、公钥以及如何使用它们的详细信息

Enumeration<String> aliases = keyStore.aliases();
String alias = aliases.nextElement();
KeyStore.PrivateKeyEntry keyEnt = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias,
                    new KeyStore.PasswordProtection(keystorePass.toCharArray()));
PrivateKey privateKey = keyEnt.getPrivateKey();