0

サーバーとクライアント間で大きなファイルを転送したいのですが、これを行う方法を知っています。クライアント側の場合、コードは次のようになります。

OutputStream output = sk.getOutputStream();     

    FileInputStream fileInputStream = new FileInputStream(file);
    byte[] buffer = new byte[1024*1024];
    int bytesRead = 0;

    while((bytesRead = fileInputStream.read(buffer))>0)
    {
        output.write(buffer,0,bytesRead);
    }

    fileInputStream.close();

サーバー側の場合:

InputStream input = sk.getInputStream();

    file = new File(filename);
    FileOutputStream out = new FileOutputStream(file);

    byte[] buffer = new byte[1024*1024];

    int bytesReceived = 0;

    while((bytesReceived = input.read(buffer))>0) {
        out.write(buffer,0,bytesReceived);
        System.out.println(bytesReceived);
        break;
    }

問題は、サーバーとクライアントが128ビットのAESキーに同意することです。そのため、ファイル転送プロセスを安全にするために、セッションキーを十分に活用したいと思います。私の質問は、クライアントとサーバーのどこにAES暗号化プロセスを挿入できるかということです。ありがとうございました!

4

1 に答える 1

1

javax.crypto.CipherInputStream / javax.crypto.CipherOutputStream を使用できると思います。使用例http://www.flexiprovider.de/examples/ExampleCrypt.html

于 2013-01-20T05:15:23.780 に答える