微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐