簡體   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