![](/img/trans.png)
[英]Which certificate should I use for make the keystore for android client
[英]Android Keystore Type which one should I choose?
我想將安全數據存儲在密鑰庫中。 所以我用
KeyStore store = KeyStore.getInstance("JCEKS");
但Android似乎不知道“JCEKS”。
04-18 10:52:17.236: WARN/System.err(474): java.security.KeyStoreException: KeyStore JCEKS implementation not found
嘗試JKS會產生同樣的錯誤。 在android上使用它有什么算法?
Android似乎正在使用bouncycastle提供商。 這是api返回的默認提供程序。 要確定設備上哪個可用,請使用KeyStore.getDefaultType()
。
在我的情況下,這返回'BKS'。 當有'。'時似乎也有例外。 密鑰庫文件路徑中的字符。
當我將商店存儲到一個包含我的包名稱的文件夾時(如Android文檔中所推薦的那樣),它會導致異常。
你也可以查看一下 。
您是否在嘗試訪問密鑰庫之前加載了密鑰庫? 錯誤消息是否恰好在getInstance指令處發生?
一些谷歌搜索說,“PKCS12”適用於少數人,給予一個去。
使用它的KeyStore keyStore = KeyStore.getInstance("PKCS12");
使用工具“KeyTools Explorer”創建密鑰庫!
你需要充氣城堡鑰匙店(BKS)。 看看這里
這對我有用:
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
記得撥打KeyStore.load(KeyStore.LoadStoreParameter param)
調用之前KeyStore.getEntry (String alias, KeyStore.ProtectionParameter param)
即
keyStore.load(null);
KeyStore.Entry keyStoreEntry = keyStore.getEntry(alias, null);
這可能有所幫助:
請參閱https://github.com/nelenkov/ecdh-kx/blob/master/src/org/nick/ecdhkx/Crypto.java
static public void listAlgorithms( String algFilter ){
java.security.Provider[] providers = java.security.Security.getProviders();
for ( java.security.Provider p : providers ){
String providerStr = String.format( "%s/%s/%f\n", p.getName(), p.getInfo(),
p.getVersion() );
mLog.debug( providerStr );
Set< Service > services = p.getServices();
List< String > algs = new ArrayList<>();
for ( Service s : services ){
boolean match = true;
if ( algFilter != null ){
match = s.getAlgorithm().toLowerCase().contains( algFilter.toLowerCase() );
}
if ( match ){
String algStr = String.format( "\t%s/%s/%s", s.getType(),
s.getAlgorithm(), s.getClassName() );
algs.add( algStr );
}
}
Collections.sort( algs );
for ( String alg : algs ) mLog.debug( "\t" + alg );
mLog.debug( "" );
}
}//listAlgorithms
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.