这是我的代码用于 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/