1
我正在研究Java中的服務器應用程序。我已經成功地通過了通信過程的握手部分,但我如何解密我的輸入流呢?這是我如何設置我的服務器:解密來自安全套接字的數據
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import javax.net.ServerSocketFactory;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import org.json.me.JSONException;
import dictionary.Dictionary;
public class Server {
private static int port = 1234;
public static void main(String[] args) throws JSONException {
System.setProperty("javax.net.ssl.keyStore", "src/my.keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "test123");
System.out.println("Starting server on port: " + port);
HashMap<String, Game> games = new HashMap<String, Game>();
final String[] enabledCipherSuites = { "SSL_RSA_WITH_RC4_128_SHA" };
try{
SSLServerSocketFactory socketFactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
SSLServerSocket listener = (SSLServerSocket) socketFactory.createServerSocket(port);
listener.setEnabledCipherSuites(enabledCipherSuites);
Socket server;
Dictionary dict = new Dictionary();
Game game = new Game(dict); //for testing, creates 1 global game.
while(true){
server = listener.accept();
ClientConnection conn = new ClientConnection(server, game, "User");
Thread t = new Thread(conn);
t.start();
}
}
catch(IOException e){
System.out.println("Failed setting up on port: " + port);
e.printStackTrace();
}
}
}
我用一個BufferedReader獲取數據從客戶端發送:
BufferedReader d = new BufferedReader(new InputStreamReader(socket.getInputStream()));
握手完成後它看起來像我越來越加密數據。我在網上做了一些研究,似乎我可能需要使用密碼,但我不確定。有任何想法嗎?
您不會解密任何內容,只需從/向/從SSL套接字寫入。請參閱http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html – 2010-04-05 23:32:15
感謝您的。看起來麻煩是d.ready(),由於某種原因,它從來沒有準備好。如果我把這件事全部解決了 – Ronald 2010-04-06 00:18:39