如何保护客户端/服务器套接字通信

时间:2012-04-25 22:42:06

标签: java security sockets client-server

假设客户端和服务器应用程序在不同的计算机上运行

今天:

// Server will receive the request and cast it as needed
ProxyResponse message = (ProxyResponse) objStream.readObject();

// Update message with some content
...

// Sent it back to client
ObjectOutputStream oos = new ObjectOutputStream(toClient);
oos.writeObject(message);

我想进一步加强这一点,以确保发出的数据受到某种程度的保护。您如何推荐我接近这个?

我正在寻找一个例子,说明客户端和服务器之间传递的数据如何在两端加密和解密,并通过SSL发送。

2 个答案:

答案 0 :(得分:12)

JDK provides an SSL socket实现似乎是一个合适的起点。它很容易使用。

最初,你可能有这样的代码:

final SocketFactory factory = SocketFactory.getDefault();
final Socket socket = factory.createSocket(host, port);

您只需更改工厂:

final SocketFactory factory = SSLSocketFactory.getDefault();
final Socket socket = factory.createSocket(host, port);

ServerSocketFactory也是如此。

答案 1 :(得分:3)

您可以使用基于asymmetricsymmetric的加密。查看BouncyCastle库。使用对称密钥加密,这就像每一方都有一个用于加密数据的共享密钥一样简单。

根据您更新的答案,我同意您应该查看SSLSocket