Python中的加密RSA

Python中的加密RSA,python,public-key-encryption,Python,Public Key Encryption,我正在检查用Python编写的代码,该代码用于生成RSA公钥-私钥对 它生成密钥对,但在代码结束时再次运行ssh-keygen。我不知道为什么会这样做。因为,RSA.generate本身将生成我们导出到两个单独文件中的密钥对。为什么需要再次运行ssh-keygen 下面是代码中的几行: keypair = RSA.generate(1024, randfunc) with open("pub", "w") as pubfile, open("id_rsa", "w") as privfile:

我正在检查用Python编写的代码,该代码用于生成RSA公钥-私钥对

它生成密钥对,但在代码结束时再次运行ssh-keygen。我不知道为什么会这样做。因为,RSA.generate本身将生成我们导出到两个单独文件中的密钥对。为什么需要再次运行ssh-keygen

下面是代码中的几行:

keypair = RSA.generate(1024, randfunc)

with open("pub", "w") as pubfile, open("id_rsa", "w") as privfile:
    privfile.write(keypair.exportKey())
    pubfile.write(keypair.publickey().exportKey())

system("ssh-keygen -m PKCS8 -i -f pub > id_rsa.pub && rm pub")
文件pub将存储公钥,id_rsa将存储rsa.generate函数生成的密钥对中的私钥

现在,它为什么要在最后运行ssh-keygen命令

而且,-i参数不接受任何输入文件,-f参数采用已生成的公钥的名称pub

执行代码后,我得到两个文件,id_rsa和id_rsa.pub

id_rsa是使用rsa.generate生成的私钥,但id_rsa.pub存储ssh keygen命令的结果

我需要一些帮助来理解在脚本末尾调用ssh-keygen的原因,以及传递给ssh-keygen的参数-我应该被传递一些值,并且-f应该有输出文件名而不是输入

注意:我了解到这样做是为了使用ssh-keygen将公钥从OpenSSL格式转换为OpenSSH格式,以便它以ssh-rsa而不是BEGIN公钥开始

这是否意味着相应私钥的格式也应该更改

因为它是从


开始私钥

运行ssh keygen将生成的PEM格式公钥转换为OpenSSH格式公钥的事实是正确的。 据我所知,在Python中没有真正好的方法来实现这一点

OpenSSH格式仅适用于公钥。 因此,不需要,如果私钥以 ----开始私钥------或----开始RSA私钥-----