我正在尝试从使用 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.run
filedata
首先,让我们修改您的私钥生成,以便我们从中获取字节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] 删除。
我来说两句