在Android中使用KeyStore存储密钥
我正在使用KeyStore保护我的私钥,但是在以下行中:
FileOutputStream fos = ctx.openFileOutput("bs.keystore", Context.MODE_PRIVATE);
被执行,我有这个异常:
'java.lang.NullPointerException'.
我不明白问题出在哪里。
码:
private Context ctx; public DataSec(Context ctx)
{
ctx = this.ctx;
}
public void genKey() throws Exception
{
SecretKey key = KeyGenerator.getInstance("AES").generateKey();
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null, "clavedekey".toCharArray());
PasswordProtection pass = new PasswordProtection("fedsgjk".toCharArray());
KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(key);
ks.setEntry("secretKeyAlias", skEntry, pass);
FileOutputStream fos = ctx.openFileOutput("bs.keystore", Context.MODE_PRIVATE);
ks.store(fos, "clavedekey".toCharArray());
fos.close();
}
谢谢您的帮助!
回答:
更改:
public DataSec(Context ctx) {
ctx = this.ctx;
}
至
public DataSec(Context ctx) {
this.ctx = ctx;
}
现在,您正在将方法中的context参数分配为与全局值相同的值,该值为null。因此,您的上下文实际上没有被存储。
以上是 在Android中使用KeyStore存储密钥 的全部内容, 来源链接: utcz.com/qa/432229.html