Python子进程,如何将原始十六进制数据传递到命令行?

2024-07-04 07:54:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个命令cat hash.bin | openssl pkeyutl -sign -inkey privk.pem,它可以正确地得到结果。在

现在我想用python subprocess来做,我是这样做的(这里hash是从这里读取的)哈希.bin)在

cmd = ['openssl', 'pkeyutl', '-sign', '-inkey ', prvk]
p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=STDOUT)
out = p.communicate(input=hash)[0]
print(out)

但是openssl失败了。在

我不能使用-in-out,因为我的代码无法访问硬盘。。在


Tags: 命令cmdbinhashoutpemcatsubprocess
1条回答
网友
1楼 · 发布于 2024-07-04 07:54:03

该问题是由inkey命令后的空格字符引起的。在

尝试移除空间,它应该可以工作:

cmd = ['openssl', 'pkeyutl', '-sign', '-inkey', prvk]

原因是Popen()作为-inkey选项标记的一部分传递空格字符。openssl决定不存在名为-inkey(带空格)的选项,因此它退出。就像是从命令行执行:

^{pr2}$

失败了。在

相关问题 更多 >

    热门问题