我试图在C++中实现非常简单的RSA算法,而且我没有使用openSSL函数。我有3个函数,generateParameter,加密和解密。每项职能的任务是:
如果我在一台机器上运行它,那么所有这些函数都能很好地工作,但是如果我想在两台不同的虚拟机上运行它呢?在VM1上运行加密,发送加密消息(例如,使用send()函数),然后在VM2上解密它。
如果参数n和d未发送到VM2,那么VM2如何解密消息?这两个参数是通过对素数(p和q)进行数学计算生成的,但我知道我不能发送素数。
这是我的问题,我很感谢你的帮助。
致以敬意,
杜利帕特
发布于 2013-09-09 09:27:46
您似乎不完全了解公钥加密是如何工作的。
两个合作伙伴都必须生成自己的公钥/私钥对。然后,共享公钥(也就是说,M1将其公钥发送给M2,反之亦然)。实际上,存在密钥分发和认证的问题,即我如何知道公开密钥属于John,它是否真的属于John?但是对于你的小例子,你一开始可以忽略这一点。
一旦两台机器都拥有了合作伙伴的公钥,您就可以使用M1 M2 的公钥对从 M2 到M2的消息进行加密。然后M2使用其私钥解密该消息。对相反的方向应用相同的想法。
这样,您就不必共享任何主要因素或私钥(正如您正确地注意到的,这样做会完全破坏进程的安全性)。
https://stackoverflow.com/questions/18694783
复制相似问题