2013-01-18 172 views
0

我已經建立了一個聊天應用程序,並且我使用PrintWriterScanner來讀取和寫入流。例如:Java安全套接字數據傳輸/接收器

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

我建議你不要試圖從頭開始創建套接字服務器。使用Netty(甚至是Apache mina)來執行此操作。 Netty內置了對SSL的支持,您可以設置客戶端證書。如果您不願意承擔SSL的額外工作,那麼您可以實施基於IP的限制或將簡單密碼添加到與SSL相連的協議中。

欲瞭解更多信息:http://netty.io