RSA中如果将公钥私钥交换使用会怎样?

发布于 2022-09-01 20:53:58 字数 169 浏览 24 评论 0

对于RSA而言,私钥加密公钥解密用来签名验证,公钥加密私钥解密则用来加密数据,那么现在如果我在生成两把钥匙的时候,把私钥公开,把公钥自己留着,是否可以把私钥当公钥使用,公钥当私钥使用?

目前我只知道,私钥要比公钥长,而且它们都有上下类似--public--的文字环绕,除了这些,它们是否有真正的本质区别?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

Bonjour°[大白 2022-09-08 20:53:58

原理上应该是可以的,实现上就不知道了。
公钥 (n, e)
私钥 (n, d)
只要 ed = kφ(n)+1 就行,随机生成 e 和 d 中的一个,算出另一个。反过来用也一样。

何时共饮酒 2022-09-08 20:53:58

从算法角度来看是没区别的,公钥和私钥可以互换,一开始公开的那个就是公钥,一旦你公开了就没办法回收了对不?
从这个角度来看,你没法公开“私钥”保留“公钥”。

黯然 2022-09-08 20:53:58

如果你自己实现了算法,当然没问题。
但是如果你是用Openssl之类的就不行。因为Openssl把生成公、私钥用的东西和私钥全部存在私钥pem里了。并且openssl的公钥e固定为65537。

> ~ > openssl genrsa
Generating RSA private key, 2048 bit long modulus
............................................................................................................................................................................................................+++
...........................................................+++
e is 65537 (0x10001)
-----BEGIN RSA PRIVATE KEY-----
......
国产ˉ祖宗 2022-09-08 20:53:58

理论上,KeyGen得到的是(e,d,n),(e,d)哪个作为公钥都是可以的,你公开的那个就是公钥,保留的那个就是私钥。
但实现中出于性能考虑,e是选好的e=65537(一开始是e=3,但是有小指数攻击的问题),这样e就只能作为公钥了。

北方的韩爷 2022-09-08 20:53:58

用的是openssl的话,在知道私钥的情况下,直接用下面命令就能生成公钥了:


    rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

所以,你公开了私钥的话,相当于把公钥也告诉他们了

_失温 2022-09-08 20:53:58

私钥公开这个加密就没什么意义了啊,你这等于把公钥也公开了,公钥就是通过私钥生成的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文