python中的'openssl rsa -in'命令

skk6

我正在尝试从使用 python subprocess.run() 生成的私钥生成公钥,其中我将私钥存储在变量中,而不是文件中。我想使用相同的缓冲区变量作为 openssl rsa 命令的输入作为输入,它可以用来生成公钥。我不知道如何在 python 代码中传递这个缓冲区-

#generating private key and keeping it in a variable
filedata = subprocess.run(['openssl', 'genrsa', '4096'], check=True, stdout=subprocess.PIPE, universal_newlines=True).stdout

现在在 openssl rsa 命令中使用该文件数据,如何在 os.system() 或 subprocess.run() 中的 python 命令中传递它

os.system("openssl rsa -in private.key -pubout > public.key")

是否可以将保存数据的变量中的 private.key 数据传递给 openssl rsa?在这里,我避免将私钥内容存储在文件中。这就是我使用 filedata 变量的原因。

感谢您的回复。

拉斯克斯

如果您不提供-in选项,则默认情况下从stdinopenssl rsa读取因此,使用,您可以使用与您用于生成私钥的命令非常相似的命令提供输入。subprocess.runfiledata

首先,让我们修改您的私钥生成,以便我们从中获取字节subprocess.run而不是字符串:

filedata = subprocess.run(
    ["openssl", "genrsa", "4096"],
    check=True,
    stdout=subprocess.PIPE,
).stdout

然后我们可以filedata作为输入传递给openssl rsa -pubout ...,在没有选项的情况下默认从标准输入-in读取:

subprocess.run(
    ["openssl", "rsa", "-pubout", "-out", "public.key"], input=filedata, check=True
)

现在您在文件中有公钥public.key如果您希望将公钥放在变量中而不是文件中,则可以删除该-out public.key选项,在这种情况下,该命令几乎与第一个相同:

pubkey = subprocess.run(
    ["openssl", "rsa", "-pubout"],
    input=filedata,
    check=True,
    stdout=subprocess.PIPE,
).stdout

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章