首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不同机器上的RSA加密和解密

不同机器上的RSA加密和解密
EN

Stack Overflow用户
提问于 2013-09-09 09:00:04
回答 1查看 675关注 0票数 1

我试图在C++中实现非常简单的RSA算法,而且我没有使用openSSL函数。我有3个函数,generateParameter加密解密。每项职能的任务是:

  1. generateParameter函数将生成两个素数(p和q)、模( n )、公共指数( e )和私有指数(d),然后将n、e和d写入文件中。
  2. 加密函数将读取参数n和e,对消息进行加密,然后写入文件。
  3. 解密函数将读取参数n和d,读取加密消息,然后对其进行解密。

如果我在一台机器上运行它,那么所有这些函数都能很好地工作,但是如果我想在两台不同的虚拟机上运行它呢?在VM1上运行加密,发送加密消息(例如,使用send()函数),然后在VM2上解密它。

如果参数n和d未发送到VM2,那么VM2如何解密消息?这两个参数是通过对素数(p和q)进行数学计算生成的,但我知道我不能发送素数。

这是我的问题,我很感谢你的帮助。

致以敬意,

杜利帕特

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-09 09:27:46

您似乎不完全了解公钥加密是如何工作的。

两个合作伙伴都必须生成自己的公钥/私钥对。然后,共享公钥(也就是说,M1将其公钥发送给M2,反之亦然)。实际上,存在密钥分发和认证的问题,即我如何知道公开密钥属于John,它是否真的属于John?但是对于你的小例子,你一开始可以忽略这一点。

一旦两台机器都拥有了合作伙伴的公钥,您就可以使用M1 M2 的公钥对从 M2 到M2的消息进行加密。然后M2使用其私钥解密该消息。对相反的方向应用相同的想法。

这样,您就不必共享任何主要因素或私钥(正如您正确地注意到的,这样做会完全破坏进程的安全性)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18694783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档