Encryption RSA-您可以从私钥创建公钥吗?
我正在为一个实验室项目创建一个加密策略,想知道是否有能力仅从私钥创建公钥 否则,公钥只能与来自某个密钥生成器的私钥同时创建吗Encryption RSA-您可以从私钥创建公钥吗?,encryption,cryptography,rsa,Encryption,Cryptography,Rsa,我正在为一个实验室项目创建一个加密策略,想知道是否有能力仅从私钥创建公钥 否则,公钥只能与来自某个密钥生成器的私钥同时创建吗 顺便说一句,一个快速的谷歌并没有真正的帮助。私钥和公钥是一起创建的。此外,RSA私钥的标准存储格式包括所有公钥字段,因为它对于优化实现和屏蔽(防止某些旁道攻击)非常有用。请参阅RSA标准本身: 编辑:问题已编辑,最初仅为RSA。对于其他非对称算法,没有要求公钥可以从私钥派生,也没有任何相反的要求。对于基于离散对数的算法(Diffie-Hellman、El-Gamal、DS
顺便说一句,一个快速的谷歌并没有真正的帮助。私钥和公钥是一起创建的。此外,RSA私钥的标准存储格式包括所有公钥字段,因为它对于优化实现和屏蔽(防止某些旁道攻击)非常有用。请参阅RSA标准本身: 编辑:问题已编辑,最初仅为RSA。对于其他非对称算法,没有要求公钥可以从私钥派生,也没有任何相反的要求。对于基于离散对数的算法(Diffie-Hellman、El-Gamal、DSA和所有这些算法的椭圆曲线变体),公钥很容易从私钥计算出来。可以设想一种退化RSA,其中私钥的知识不允许重构公钥,但这不需要存储良好性能所需的一些关键元素(详细地说,通过中国剩余定理,存储RSA模因子可以使速度提高4倍,因此每个人都存储这些因子)。从概念上讲,公钥是公开的,因此假设“每个人”知道这一点;实际上,私钥存储格式几乎总是包含存储公钥的规定,或者至少包含足够的数据来重建公钥。是的,您可以这样做(对于某些pkc方案,可能不是所有pkc方案)。从ssh keygen man文件:
-读取私钥文件并打印公钥。取决于算法。对于RSA,您不能,而对于EC,您可以。但是,公钥通常与私钥一起存储(当然不是相反),因此这不是一个真正的问题(如果您有私钥,则同一文件还包括公钥)。从命令行从私钥中提取公钥 命令行比较,以显示在忽略空格的情况下,公共RSA密钥和提取密钥之间没有区别
ssh-keygen-t rsa-f~/id\u rsa-N'-C'
ssh-keygen-y-f'/home/vagrant/id\u rsa'>提取的\u公钥
diff-b id\u rsa.pub提取的\u公钥
忽略id_rsa.pub末尾的空格公钥和提取的密钥之间没有区别。实际上,公钥主要是与私钥一起生成的 如果您丢失了公钥但获得了私钥,您仍然可以从私钥中恢复公钥 您只需从私钥中提取公钥,如下所示: 从私钥中提取公钥:
ssh-keygen -f~/.ssh/test_rsa -y > ~/.ssh/test_rsa.pub
-f选项指定要列出指纹的密钥文件
-y选项将读取SSH私钥文件并将SSH公钥打印到标准输出。公钥部分将重定向到与私钥同名但扩展名为.pub的文件
注意:
如果密钥设置了密码,则生成公钥将需要密码。我回滚了编辑。我认为原始海报打算将此问题仅应用于RSA。+1。但这可能不会实际“创建”公钥,它只会从私钥文件中提取它(与私钥一起存储在该文件中).这个问题(及其答案)对我很有用。但它不应该转到“服务器故障”而不是stackoverflow吗?