RSA中如果将公钥私钥交换使用会怎样?
对于RSA而言,私钥加密公钥解密用来签名验证,公钥加密私钥解密则用来加密数据,那么现在如果我在生成两把钥匙的时候,把私钥公开,把公钥自己留着,是否可以把私钥当公钥使用,公钥当私钥使用?
目前我只知道,私钥要比公钥长,而且它们都有上下类似--public--的文字环绕,除了这些,它们是否有真正的本质区别?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
原理上应该是可以的,实现上就不知道了。
公钥 (n, e)
私钥 (n, d)
只要 ed = kφ(n)+1 就行,随机生成 e 和 d 中的一个,算出另一个。反过来用也一样。
从算法角度来看是没区别的,公钥和私钥可以互换,一开始公开的那个就是公钥,一旦你公开了就没办法回收了对不?
从这个角度来看,你没法公开“私钥”保留“公钥”。
如果你自己实现了算法,当然没问题。
但是如果你是用Openssl之类的就不行。因为Openssl把生成公、私钥用的东西和私钥全部存在私钥pem里了。并且openssl的公钥
e
固定为65537。理论上,KeyGen得到的是(e,d,n),(e,d)哪个作为公钥都是可以的,你公开的那个就是公钥,保留的那个就是私钥。
但实现中出于性能考虑,e是选好的e=65537(一开始是e=3,但是有小指数攻击的问题),这样e就只能作为公钥了。
用的是openssl的话,在知道私钥的情况下,直接用下面命令就能生成公钥了:
所以,你公开了私钥的话,相当于把公钥也告诉他们了
私钥公开这个加密就没什么意义了啊,你这等于把公钥也公开了,公钥就是通过私钥生成的