V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aiqier
V2EX  ›  信息安全

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

  •  1
     
  •   aiqier · 2015-06-25 10:12:51 +08:00 · 3862 次点击
    这是一个创建于 3232 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    9 条回复    2015-06-26 10:20:46 +08:00
    sneezry
        1
    sneezry  
       2015-06-25 10:17:19 +08:00 via iPhone
    公钥可由私钥算出来呀~
    wy315700
        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一般会存储到私钥里。
    finab
        3
    finab  
       2015-06-25 10:23:22 +08:00
    当你把私钥公开,公钥保留,那么公钥就变成了“私钥”呗
    你保留的那个就是你的“私钥”

    公钥加密/签名 私钥解密/验签,反着来也行

    但要注意 在iOS中,为了安全性考虑,只能公钥加密 私钥解密, 私钥签名 公钥验签
    如果你的加密解密有iOS参与,那么最好按照上面那种情况 公开公钥

    否则就需要集成一个庞大的openssl库 来处理加密解密了
    echo1937
        4
    echo1937  
       2015-06-25 10:24:43 +08:00
    @sneezry 私钥是推倒不出公钥的吧,你在openssl私钥导公钥的时候,是因为p,q还没有丢掉。
    amaranthf
        5
    amaranthf  
       2015-06-25 11:34:52 +08:00
    从数学上来说,公钥私钥是完全对称的,但是实际使用中,如同2L所说,公钥一般采用更容易运算的数,所以如果你采用默认的生成算法生成密钥对,攻击者有了私钥是比较好猜到公钥的。自己去实现的话可以避免此问题。
    aiqier
        6
    aiqier  
    OP
       2015-06-26 10:07:10 +08:00
    @wy315700 那么在时间上,是不是公钥加密和解密的速度,也要比私钥加密和解密的速度快?
    wy315700
        7
    wy315700  
       2015-06-26 10:12:37 +08:00
    @aiqier
    因为公钥通常很短,所以公钥计算的时间远远小于私钥计算的时间。

    另外,一个术语问题,公钥可以加密,私钥只能签名。
    任何情况下,不公开的叫私钥,公开的叫公钥,你把两个密钥换一换,那他们的名字也要换一换。
    aiqier
        8
    aiqier  
    OP
       2015-06-26 10:15:01 +08:00
    @wy315700 貌似很多书或者博客都会把私钥签名也称作私钥加密,我一直不知道是真的可以这样叫,还是他们叫错了。
    wy315700
        9
    wy315700  
       2015-06-26 10:20:46 +08:00   ❤️ 1
    @aiqier
    肯定是叫错了,上次我和老师说私钥加密,然后被老师骂了一顿,说私钥不能加密,只能签名。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1859 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:48 · PVG 08:48 · LAX 17:48 · JFK 20:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.