python zip 和 AES 使用子进程加密输出

python zip and AES encrypt the output using subprocess

我是 python 的新手,我想压缩并使用子进程命令通过 python 在 AES 中加密输出。

我使用的标准shell命令如下:

zip -9 - test.txt | openssl enc -aes-256-cbc -md sha256 -out test.ENC -pass pass:123456

我尝试像下面这样在 python 中使用:

import subprocess
compress = subprocess.Popen(['zip', '-9', 'test.txt'], stdout=subprocess.PIPE,)
subprocess.Popen(['openssl enc -aes-256-cbc -md=sha256 -pass pass:123456 -out', stdin=compress.stdout], stdin=compress.stdout,)

我遇到一个错误:

File "test.py", line 3
    subprocess.Popen(['openssl enc -aes-256-cbc -md=sha256 -pass pass:123456 -out test.ENC', stdin=compress.stdout], stdin=compress.stdout,)

有什么帮助吗? 谢谢

问题:

  • 在我的openssl版本中,没有-aes-256-cbc。
  • '-md=sha256'需要是'-md','sha256'
  • 您是要将 openssl 的输出发送到管道吗?
import subprocess
compressor = subprocess.Popen(
     ['zip', '-9', 'test.txt'], stdout=subprocess.PIPE)
subprocess.Popen(
        ['openssl', 'enc', '-aes-256-cfb', '-md', 'sha256', '-pass','pass:123456'],
        stdin=compressor.stdout)