繁体   English   中英

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

[英]How to store and load keys using java.security.KeyStore class

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

储存:

KeyStore ks = KeyStore.getInstance("JKS");
ks.setKeyEntry("keyAlias", key, passwordForKeyCharArray, certChain);
OutputStream writeStream = new FileOutputStream(filePathToStore);
ks.store(writeStream, keystorePasswordCharArray);
writeStream.close();

注意,除非您传递PrivateKey ,否则certChain可能为null

加载:

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

阅读javadocs

编辑:

请注意,如果要存储SecretKey或使用SunJCE提供程序的任何部分(Java Cryptography Extension),则需要将KeyStore类型设置为JCEKS。

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

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

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

在博客上添加了一篇帖子 ,详细介绍了如何加载私钥,公钥以及如何使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM