簡體   English   中英

Android密鑰庫類型我應該選擇哪一個?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM