我正在檢查用Python編寫的用於生成RSA公共私鑰對的代碼。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")
文件酒館將存儲的公鑰和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開頭。
這是否意味着相應私鑰的格式也應該改變?
因爲它開始,
BEGIN PRIVATE KEY