我已经建立了一个聊天应用程序,我正在使用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呢?
答案 0 :(得分:0)
我建议您不要在尝试时从头开始创建套接字服务器。使用Netty(甚至是Apache mina)来做到这一点。 Netty内置了对SSL的支持,您可以设置客户端证书。如果您不愿意承担SSL的额外工作,那么您可以实施基于IP的限制或在您的协议中添加一个简单的密码以及SSL。
有关详细信息:http://netty.io