0

との間の接続を保護しようとAndroid appJava Web ServiceていRSA private/public.keyます。シナリオ全体をお話ししましょう。Androidアプリをダウンロードしてモバイルデバイスにインストールすると、public.keyを取得するためにWebサービスに接続するのは1回だけです。その後、Androidアプリはこのpublic.keyをWebサービスとのすべての通信に使用します。これまでのところ、同じアプリケーションでpublic.keyを使用して暗号化し、秘密鍵を使用して復号化することに成功しました。しかし、今度は、公開鍵をAndroidデバイスのクライアントに配布し、この公開鍵ファイルを保存して使用できるようにする必要があります。私の2番目のシナリオについてyuに話させてください。また、これらの秘密鍵と公開鍵も、たとえば2か月ごとに更新する必要があります。公開鍵が更新されたことをクライアントに通知し、新しいpublic.keyを送信するにはどうすればよいですか。ありがとうございます。
以下のコードは、public.keyをリクエストするためのものです。Inputstreamに入ることができますが、public.keyを作成してその中にコンテンツを書き込むことができません。

    public ConnectService(String sngUrl,Context context){
    try {
        URL url = new URL(sngUrl);
        URLConnection conection = url.openConnection();
        conection.connect();

        InputStream input = new BufferedInputStream(url.openStream(), 8192);
        System.out.println(convertStreamToString(input));

        String dirPath = context.getFilesDir().getAbsolutePath() + File.separator + "key";
        File keyDir = new File(dirPath);
        if (!keyDir.exists())
            keyDir.mkdirs();

        OutputStream output = new FileOutputStream(keyDir+"/public.key");

        byte data[] = new byte[1024];
        while ((input.read(data)) != -1) {
            output.write(data);
        }

        output.flush();
        output.close();
        input.close();

    } catch (Exception e) {
        System.out.println("HATA: "+e.getMessage());
        e.printStackTrace();
    }
}

    EXCEPTION : java.io.FileNotFoundException: /data/data/com.shoponway/files/key/public.key
4

1 に答える 1

0

コードについては、これを試してください:

OutputStream output = new FileOutputStream(new File(dirPath+"/public.key"));

公開鍵の更新については、インターネットに接続すると自動的にダウンロードしたり、アプリケーションの起動後に鍵が更新されたかどうかを確認したりできます。

編集:これは私がファイルに何かを書くために使用するものです

fw = new FileWriter(new File(Environment.getExternalStorageDirectory().getPath()
           + "/myFolder/public.key"));
...
while(something){
    fw.write(blaBla);
}
fw.flush();
fw.close();

以下の部分はSDカードを保証します:

Environment.getExternalStorageDirectory().getPath()

それに応じて変更できます。

于 2013-03-21T12:55:45.783 に答える