我有一個Java KeyStore(JKS),我需要閱讀它與BouncyCastle。閱讀JKS與BouncyCastle
我添加BC
供應商在供應商列表的頂部:
Security.insertProviderAt(new BouncyCastleProvider(), 1);
如果我創建密鑰庫是這樣的:
final KeyStore keystore = KeyStore.getInstance("JKS", "BC");
我得到一個錯誤:
java.security.KeyStoreException: JKS not found
如果我沒有指定供應商,將使用Sun
供應商創建KeyStore,並且keystore.aliases()
將包含EmptyEnumeration
。
正如我在this話題看到,BouncyCastle的可JKS
工作,我怎樣才能讀取BouncyCastle的JKS?
你是否在程序的頂部添加了以下行:'Security.addProvider(new BouncyCastleProvider());'?參考[6.0節](https://www.bouncycastle.org/specifications.html)。 –
@ Mr.Polywhirl是的。我編輯了說明 – Kirill
您很困惑「使用」和「實施」。您通常不應該在JCE的任何'getInstance()'方法中指定提供者。只需使用'Security.addProvider()'添加提供程序,讓JCE找到任何提供程序的實現。只有Oracle提供者實現了JKS密鑰庫,但是你的'KeyStore.getInstance(「JKS」,「BC」);'強制JCE只查看BouncyCastle的JKS實現,它沒有。另外,除非你真的知道你在做什麼,否則不要在特定位置添加BouncyCastle提供程序。 –