java - keystore 未初始化异常

标签 java android keystore

这是我的代码用于 key 存储的使用。当我运行我的应用程序时,它显示 key 存储未初始化的异常。

                 try {
                        KeyStore ks = KeyStore.getInstance("JKS");
                        pk = ks.getKey("Alias", null);
                        if(pk != null){
                            sendSMS("5556", Base64.encodeToString(pk.getEncoded(), Base64.DEFAULT));
                        }

                    }
                    catch (KeyStoreException e) {
                       e.printStackTrace();
                    }
                    catch(NoSuchAlgorithmException e){
                        e.printStackTrace();
                    }
                    catch (UnrecoverableKeyException e){
                        e.printStackTrace();
                    }


          try {
                    ks.deleteEntry("Alias");
                    ks.setKeyEntry("Alias", privateKey.getEncoded(), null);
                }
                catch (KeyStoreException e) {
                    e.printStackTrace();
                }
                catch(NullPointerException e){
                    e.printStackTrace();
                }

最佳答案

您使用的变量“ks”超出了范围。行

ks.deleteEntry("Alias");
ks.setKeyEntry("Alias", privateKey.getEncoded(), null);

需要与 KeyStore ks = KeyStore.getInstance("JKS"); 位于同一 try{ block 中

您还需要使用 load(..) 方法初始化 keystore :http://developer.android.com/reference/java/security/KeyStore.html#load(java.io.InputStream , 字符[])

使用您的示例代码,这将是:

try {
    KeyStore ks = KeyStore.getInstance("JKS");
    ks.load(null, null);
    pk = ks.getKey("Alias", null);
    if(pk != null){
        sendSMS("5556", Base64.encodeToString(pk.getEncoded(), Base64.DEFAULT));
    }
    ks.deleteEntry("Alias");
    ks.setKeyEntry("Alias", privateKey.getEncoded(), null);
}
catch (KeyStoreException e) {
    e.printStackTrace();
}
catch(NoSuchAlgorithmException e){
    e.printStackTrace();
}
catch (UnrecoverableKeyException e){
    e.printStackTrace();
}

关于java - keystore 未初始化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22761847/

相关文章:

java - 根据余数计算数组大小

java - 在我的 Web 服务中使用大量私有(private)静态方法是不是不好的做法

java - onBlockActivated block GUI

android从zip文件中解压文件夹并从该文件夹中读取内容

ssl - keystore 、信任库和证书之间的关系

Android:我丢失了我的 android keystore ,我该怎么办?

java - 类 GenericMemoryCell<T> 中的 GenericMemoryCell 无法应用于给定类型

java - ApplicationInfo 元数据返回 null

java - 在android中读取嵌套的json字符串

java - Web 服务客户端 - 带有 keystore