对于RSA而言,私钥加密公钥解密用来签名验证,公钥加密私钥解密则用来加密数据,那么现在如果我在生成两把钥匙的时候,把私钥公开,把公钥自己留着,是否可以把私钥当公钥使用,公钥当私钥使用?
目前我只知道,私钥要比公钥长,而且它们都有上下类似--public--的文字环绕,除了这些,它们是否有真正的本质区别?
1
sneezry 2015-06-25 10:17:19 +08:00 via iPhone
公钥可由私钥算出来呀~
|
2
wy315700 2015-06-25 10:22:30 +08:00
一楼正解,理论上公钥加密里公钥和私钥可以对称使用,但是在实际上各个算法都不一样的
RSA里有几个参数 P,Q,N,E,D 其中 P,Q是素数,N是大整数,E一般65537,D是对应的数 理论上 N和D是私钥,N和E是公钥,但是实际操作到时候Q,P一般会存储到私钥里。 |
3
finab 2015-06-25 10:23:22 +08:00
当你把私钥公开,公钥保留,那么公钥就变成了“私钥”呗
你保留的那个就是你的“私钥” 公钥加密/签名 私钥解密/验签,反着来也行 但要注意 在iOS中,为了安全性考虑,只能公钥加密 私钥解密, 私钥签名 公钥验签 如果你的加密解密有iOS参与,那么最好按照上面那种情况 公开公钥 否则就需要集成一个庞大的openssl库 来处理加密解密了 |
5
amaranthf 2015-06-25 11:34:52 +08:00
从数学上来说,公钥私钥是完全对称的,但是实际使用中,如同2L所说,公钥一般采用更容易运算的数,所以如果你采用默认的生成算法生成密钥对,攻击者有了私钥是比较好猜到公钥的。自己去实现的话可以避免此问题。
|