Android密钥库类型我应该选择哪一个?

时间:2011-04-18 09:10:17

标签: android security keystore

我想将安全数据存储在密钥库中。 因此我使用

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上使用它很好?

6 个答案:

答案 0 :(得分:10)

Android似乎正在使用bouncycastle提供商。这是api返回的默认提供程序。要确定设备上默认哪个可用,请使用KeyStore.getDefaultType()

在我的情况下,这返回了'BKS'。当有'。'时似乎也有例外。密钥库文件路径中的字符。

当我将商店存储到包含我的包名称的文件夹时(如Android文档中所推荐的那样),它导致了异常。

您也可以查看this

答案 1 :(得分:4)

您是否在尝试访问密钥库之前加载了密钥库?错误消息是否恰好在getInstance指令处发生?

有些谷歌搜索说“PKCS12”适用于少数人,可以随意使用。

答案 2 :(得分:2)

你需要充气城堡钥匙店(BKS)。 看看here

答案 3 :(得分:2)

使用它KeyStore keyStore = KeyStore.getInstance("PKCS12");

使用工具“KeyTools Explorer”创建密钥库!

答案 4 :(得分:1)

这对我有用:

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

答案 5 :(得分:0)

这可能会有所帮助:

请参阅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