Intereting Posts
   

在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。 因此,您的上下文实际上并未存储。