5

秘密鍵を保護するために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();        
    }

助けてくれてありがとう!

4

1 に答える 1

4

変化する:

public DataSec(Context ctx) 
{
ctx = this.ctx;
}

public DataSec(Context ctx) 
{
    this.ctx = ctx;
}

現在、メソッドのコンテキストパラメータをグローバルパラメータと同じ値(null)に割り当てています。このため、コンテキストは実際には保存されません。

于 2013-02-20T05:28:47.550 に答える