0

私は Chat アプリケーションを構築しました。ストリームへの読み書きに and をPrintWriter使用しています。Scanner例えば:

Socket socket = new Socket(HOST, PORT);
Scanner IN = new Scanner(socket.getInputStream());
PrintWriter OUT = new PrintWriter(socket.getOutputStream());
String MESSAGE = "";

while(true){
 if(IN.hasNext()){
    MESSAGE = IN.nextLine();
    OUT.println("RESPONSE: " + MESSAGE);
    OUT.flush();
 }
}

誰かが私のサーバー (ServerSocket) に接続した場合、彼は私がストリームに書き込んだすべてのデータを読み取ることができると考えています。彼がストリームに書き込みを行った場合、最悪のケースになります。

暗号化について考えていました。すべてのデータは暗号化され、「RECEIVER」はデータ ストリームを復号化します。また、ストリームに書き込まれる暗号化された文字列の最初または最後に、保護されたキーを使用する必要があります。また、保護されたキーが有効な場合、文字列は受信者によって読み取られることが許可されます。

これは良い解決策ですか?これは十分に確保されていますか?PrinterWriter と Scanner を使用してストリームを読み書きするだけで十分ですか? InputStreamReader と BufferedStream はどうですか?

4

1 に答える 1

0

あなたが試みているように、ソケットサーバーを最初から作成しないことをお勧めします。これを行うには、Netty (または Apache mina) を使用します。Netty には SSL のサポートが組み込まれており、クライアント側の証明書をセットアップできます。SSL の余分な作業を引き受けたくない場合は、IP ベースの制限を実装するか、SSL と組み合わせたプロトコルに単純なパスワードを追加できます。

詳細については、http: //netty.ioを参照してください。

于 2013-01-18T16:54:10.057 に答える