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

Java安全套接字数据传输/接收器,java,security,sockets,chat,Java,Security,Sockets,Chat,我已经建立了一个聊天应用程序,我正在使用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.hasNex

我已经建立了一个聊天应用程序,我正在使用
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),他可以读取我写入流的所有数据。最糟糕的情况是,如果他向流中写入数据

我在考虑加密。所有数据都将被加密,“接收者”将解密数据流。此外,我必须在将写入流的加密字符串的开头或结尾使用安全密钥。如果安全密钥有效,则允许接收方读取字符串


这是一个好的解决方案吗?这足够安全吗?使用PrinterWriter和Scanner读取/写入流是否足够好?InputStreamReader和BufferedStream呢?

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

有关更多信息: