使用非对称密钥加密技术确保Java RMI的安全。

问题描述 投票:1回答:1

我有一个需求,就是在一个Peer 2 Peer文件共享应用程序中,使用非对称密钥加密(RSA)来确保Java RMI调用的安全。

我参考了 这个但它使用密码口令(对称密钥)对消息进行XOR。我希望客户端用服务器的公钥加密RMI Socket流,服务器用私钥解密Socket输入流。假设。P2P文件共享应用中的每个节点都有对方的公钥。

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

我找不到其他使用非对称密钥来保证RMI调用安全的参考文献。请大家帮忙。

更新一下。

我是一名学生,这是一个大学项目,我必须使用RSA加密技术来保护RMI上发生的通信。所以,我没有任何选择了。

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

我真的很感谢在这个方向上的任何帮助指导。请不要关闭这个问题。

更新2不需要使用内置库就能实现RSA加密,除了 java.math.BigIntegerjava.security.SecureRandom

java rsa rmi socketfactory
1个回答
0
投票

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

我尝试了许多方法,但我得到的异常和节点不启动。所以,我相信没有一种通用的方法可以通过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公钥进行解密,然后投向自定义对象,提取信息,最后传递给业务逻辑。这个过程是在每次RMI调用时完成的。

这类似于套接字,我们把所有的东西都写进流中。最终,在RMI调用中,我们传递的对象被转换成字节。所以,使用这种方法,我是明确地将它们转换为字节,然后应用加密并通过RMI传递。通过网络,它将以加密字节的形式传输。这将是所有的RMI调用,包括消息以及文件内容。

© www.soinside.com 2019 - 2024. All rights reserved.