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


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

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

加密算法 rsa

binbox 10 years ago

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

什么破名字 answered 10 years ago

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


 > ~ > openssl genrsa
Generating RSA private key, 2048 bit long modulus
............................................................................................................................................................................................................+++
...........................................................+++
e is 65537 (0x10001)
-----BEGIN RSA PRIVATE KEY-----
......

chenge answered 10 years ago

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

JoJo33 answered 10 years ago

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

发呆的懒猫 answered 10 years ago

这样加解密当然没有问题

但是,你把私钥公开,公钥是可以通过私钥计算出来的,如何保护密钥?

这也是为什么公钥叫 钥的原因。

本质上公钥是一个灰常灰常大的整数,它的两个质因子就是私钥,拿到私钥,相乘就可以得到公钥;

而你拿到公钥,很难分解出它的两个质因子(私钥)。

gj54321 answered 10 years ago

Your Answer