RSA-您可以从私钥创建公钥吗?

| 我正在为实验室项目创建加密策略,想知道是否存在仅从私钥创建公钥的功能? 否则,只能与某个密钥生成器同时创建公共密钥吗? 附言一个快速的谷歌并没有真正的帮助。     
已邀请:
        私钥和公钥是一起创建的。而且,RSA私钥的标准存储格式包括所有公钥字段,因为它对于优化的实现和屏蔽(防止某些旁通道攻击)很有用。请参阅RSA标准本身:PKCS#1。 编辑:问题已被编辑,最初仅是RSA。对于其他非对称算法,没有要求可以从私钥派生公钥,也没有相反的要求。对于基于离散对数的算法(Diffie-Hellman,El-Gamal,DSA和所有这些的椭圆曲线变体),可以从私钥轻松计算出公钥。可以设想一种简并的RSA,在这种简并的RSA中,私钥的知识不允许重构公钥,但是这不需要存储一些性能良好所需的关键元素(详细而言,存储RSA模数因子可以通过中国剩余定理将速度提高4倍,因此每个人都存储这些因素)。从更概念上讲,公钥是公钥,因此假定“每个人”都知道。实际上,私钥存储格式几乎总是包含用于存储公钥的规定,或者至少包括足够的数据来重建公钥。     
        是的,您可以执行此操作(对于某些(可能不是全部)pkc方案)。从ssh-keygen的man文件中: -y读取私钥文件并打印公钥。     
        取决于算法。使用RSA,您不能,使用EC则可以。但是,公钥通常总是与私钥一起存储(当然不是这样),所以这并不是真正的问题(如果您有私钥,则同一文件中也包含公钥) )。     
        从命令行从私钥中提取公用RSA密钥 命令行比较显示,如果您忽略空白,则公共RSA密钥和提取的密钥之间没有区别。 在主目录下生成没有密码短语和注释的公共私钥配对。
ssh-keygen -t rsa -f ~/id_rsa -N \'\' -C \"\"
生成公钥到文件'extracted_public_key \'
ssh-keygen -y -f \'/home/vagrant/id_rsa\' > extracted_public_key
与\'extracted_public_key \'文件的公用密钥不同,忽略空白。
diff -b id_rsa.pub extracted_public_key
忽略id_rsa.pub末尾的空格,公共密钥和提取的密钥之间没有区别。     
        实际上,公钥大多与私钥一起生成。 如果您丢失了公用密钥但得到了专用密钥,则仍然可以从专用密钥中恢复公用密钥。 您要做的就是从私钥中提取公钥,如下所示: 从私钥中提取公钥:
ssh-keygen -f~/.ssh/test_rsa -y > ~/.ssh/test_rsa.pub
-f选项指定密钥文件以列出指纹 -y选项将读取一个私有SSH密钥文件,并将SSH公共密钥输出到stdout。公钥部分将重定向到与私钥同名但文件扩展名为.pub的文件。 注意: 如果密钥设置了密码,则生成公共密钥需要密码。     

要回复问题请先登录注册