当前位置:  开发笔记 > Android > 正文

给定私钥,是否可以派生其公钥?

如何解决《给定私钥,是否可以派生其公钥?》经验,为你挑选了3个好方法。

通过阅读各种材料,无论我理解什么,公钥 - 私钥对都是不对称加密的基础,也是选择2个素数(大致是你的私钥)并乘以它们(大致是你的公钥)的东西,我如果您知道私钥,则可能会生成公钥.这是正确的还是我错了什么?

[编辑]

让我更加困惑的是,只能使用私钥(使用.NET类RSACryptoServiceProvider)将RSA密钥序列化为XML .不确定这个限制是否有意!



1> vaab..:

在大多数非对称加密系统实现中,唯一确保的事实是您无法从公钥中找到私钥.反过来说,在大多数情况下从私钥中找到公钥是微不足道的.

例如,在RSA中,您可以使用以下私钥创建公钥:

openssl rsa -in private.pem -pubout -out public.pem

误导的是术语:"私钥"指的是2个不同的概念,无论你是在谈论理论,还是在谈论实际实现:

理论的私钥是夫妻(d,n)的这股完美对称(数学)的关系(E,N) .如果您要比较这些,则无法从另一个计算.

实际私钥(如在例如OpenSSL实现),是指包含一个文件(d,n)的同时也为解码速度目的的几个重要的中间值.除此之外,公钥e的理论上"未知"部分通常按惯例固定为常用值(0x10001默认情况下为openssl,虽然可以更改,但强烈建议仅遵循非常具体的值) .因此,从私钥中推导出公钥(e,n)是微不足道的,原因不止一个.



2> sleske..:

这取决于加密系统.

RSA中,我们(引用维基百科):

公钥由模数n和公共(或加密)指数e组成.私钥由模数n和私有(或解密)指数d组成,必须保密.

现在,如果我们有n和d(私钥),我们只缺少公钥的e.但是e通常相当小(少于三位数),甚至是固定的(常见值为65537).在这些情况下,获取公钥是微不足道的.

对于Elliptic Curve Diffie-Hellman,私钥是d,而公钥dG(G也是公共的),所以它也是微不足道的.


@Henno Bransma:你如何计算"p和q使得pq = n"?

3> erickson..:

这取决于算法,你的意思是"私钥".

RSA私钥通常存储在"中国剩余定理"表中.例如,RSAPrivateKeyPKCS#1中定义的结构以及许多其他加密标准重用的结构采用这种形式.这种形式包括两个秘密数字通常表示pq,从该欧拉被计算.使用totient和private exponent,可以快速计算公共指数.

在任何情况下,大多数RSA密钥对使用65537作为公共指数,并且模数总是作为私钥的一部分携带.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有