根据我通过阅读各种材料所了解的一点点,公钥-私钥对是非对称加密的基础,也是选择 2 个素数(大致是您的私钥)并将它们相乘(大致是您的公钥)的基础。在我看来,如果您知道私钥,就可以生成公钥。这是正确的还是我弄错了什么?
让我更困惑的是,不可能将 RSA 密钥序列化为 XMLonly私钥(使用.NET 类 RSACryptoServiceProvider)。不知道这个限制是有意还是无意!
在大多数非对称加密系统实现中,唯一可以保证的事实是您无法从公钥中找到私钥。相反,在大多数情况下,从私钥中找到公钥是微不足道的。
例如,在 RSA 中,您可以使用以下命令从私钥创建公钥:
openssl rsa -in private.pem -pubout -out public.pem
令人误解的是术语:“私钥”指的是两个不同的概念,无论您是在谈论理论,还是在谈论实际实现:
- The 理论的私钥是情侣(d, n)与 具有完美的对称(数学)关系(e, n)。如果您比较它们,则无法从其中一个计算出另一个。
- The 实际的私钥(例如在 openssl 实现中),指的是包含以下内容的文件(d, n)还有几个用于解码速度目的的重要中间值。除此之外,理论上公钥的“未知”部分e通常按照约定固定为共同值(即
0x10001
默认情况下,在 openssl 中,尽管可以更改,但强烈建议仅坚持非常具体的价值观 https://security.stackexchange.com/questions/2335/should-rsa-public-exponent-be-only-in-3-5-17-257-or-65537-due-to-security-c)。所以推导出公钥(e, n)由于不止一个原因,从私钥中获取数据是微不足道的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)