我正在检查用 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 的参数。-i 应该传递一些值,并且 -f 应该有输出文件名而不是输入。
注意:我读到这样做是为了使用 ssh-keygen 将公钥从 OpenSSL 格式转换为 OpenSSH 格式,以便它以 ssh-rsa 而不是 BEGIN PUBLIC KEY 开头。
这是否意味着相应私钥的格式也应该改变?
既然开始了,
开始私钥