在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

回到顶部