encryption - 如何从私钥生成 RSA 公钥?
问题描述
我正在阅读关于 SO 的问题,发现我们可以openssl
在 python 中使用私钥从私钥生成公钥。现在我想知道这是如何工作的(数学部分)以及如何在不使用openssl
或任何其他库的情况下在 python 或 C 中实现该方法?
解决方案
如果私钥以 CRT 格式(中国剩余定理)存储,则不涉及数学;格式包括公共指数。这就是 OpenSSL 工具如何从私钥“创建”公钥的方式。
如果私有不是以 CRT 格式存储的,那么在给定私有指数的情况下计算公共指数通常是不可行的。但是,您可以猜测常见的公共指数并轻松验证您的猜测。
从数学上讲,为了使用另一个指数快速计算一个指数,您需要知道 totient,这是一个根据模数的因子计算的数字。当然,RSA 的安全性取决于分解模数的不可行性。这种关系是对称的;您是否知道公共指数并尝试计算私人指数并不重要,反之亦然。
推荐阅读
- leaflet - 如何使用传单?
- c# - 带有浮点值的 Unity 枚举下拉列表
- apache - .htaccess 子域的端口重写
- javascript - 如何使用 Python 和 Selenium 从外部 Javascript 文件执行函数?
- html - 让视频在 iphone/mobile 上内联工作
- python-3.x - apache_beam.io.WriteToText() 文件名作为模板参数
- c++ - 大括号 {} 的 Visual Code C/C++ 格式
- python - 如何列出行值并在 DataFrame 中添加为新列?
- r - 执行多个逻辑操作的有效方法
- jquery - WordPress 自定义字段之类的功能