使用非对称密钥加密保护 Java RMI

Securing Java RMI with Asymmetric key cryptography

我需要在对等 2 对等文件共享应用程序中使用非对称密钥加密 (RSA) 保护 Java RMI 调用。

我提到了 this,但它使用密码(对称密钥)对消息进行 XOR。我希望客户端使用服务器的 public 密钥加密 RMI 套接字流,并且服务器应使用其私钥来解密套接字输入流。 假设:P2P 文件共享应用程序中的每个节点都有彼此的 public 密钥

由于可以有多个客户端-服务器(P2P节点),客户端应该使用相关服务器的public密钥来加密套接字流数据。

我找不到任何其他使用非对称密钥来保护 RMI 调用的参考资料。请帮忙。

更新:

我是一名学生,这是一个大学项目,我必须使用 RSA 加密来保护通过 RMI 发生的通信。所以,我别无选择。

在之前的项目中,我创建了一个Napster & Gnutella风格的P2P文件共享系统。现在的任务是使用 RSA 使用它们的 public-私钥来加密节点之间的通信。

我非常感谢这方面的任何 help/guidance。请不要关闭这个问题。

更新 2 在不使用 java.math.BigIntegerjava.security.SecureRandom

之外的内置库的情况下实现 RSA 加密

我不知道是否应该回答我自己的问题。

我尝试了很多方法,但出现异常,节点没有启动。因此,我相信没有一种通用方法可以针对我的情况通过 RSA 加密来保护 RMI 通信。

所以,我尝试了一种不同的方法。

我更改了接口和实现中 RMI 方法的方法签名

public void query(MessageID messageID, long TTL, String fileName, String upstreamIP) throws RemoteException

public void query(byte[] bytes) throws RemoteException

现在,在每次 RMI 调用之前,我将参数转换为自定义对象,然后转换为字节,使用发送方的私钥应用 RSA 加密以转换为加密字节,然后将其传递给服务器。

在服务器端,收集字节,使用发件人的RSA public密钥解密,然后转换为自定义对象,提取信息,最后传递给业务逻辑。此过程在每次 RMI 调用时完成。

这类似于套接字,我们将所有内容写入流中。最终,在 RMI 调用中,我们传递的对象被转换为字节。因此,使用这种方法,我明确地将它们转换为字节,然后应用加密并通过 RMI 传递它。通过网络,它将作为加密字节传输。这将适用于包括消息和文件内容的所有 RMI 调用。