Java安全套接字数据传输/接收器

时间:2013-01-18 16:30:27

标签: java security sockets chat

我已经建立了一个聊天应用程序,我正在使用PrintWriterScanner来读取和写入流。例如:

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呢?

1 个答案:

答案 0 :(得分:0)

我建议您不要在尝试时从头开始创建套接字服务器。使用Netty(甚至是Apache mina)来做到这一点。 Netty内置了对SSL的支持,您可以设置客户端证书。如果您不愿意承担SSL的额外工作,那么您可以实施基于IP的限制或在您的协议中添加一个简单的密码以及SSL。

有关详细信息:http://netty.io

相关问题