如何使用 pv 显示 openssl 加密/解密的进度?

Lin*_*eak 4 encryption openssl pv

我需要加密并能够使用 解密文件openssl,目前我只需使用以下方法即可:

openssl enc -aes-256-cbc -salt -in "$input_filename" -out "$output_filename"
Run Code Online (Sandbox Code Playgroud)

和解密:

openssl enc -aes-256-cbc -d -salt -in "$input_filename" -out "$output_filename"
Run Code Online (Sandbox Code Playgroud)

但是对于大文件,我希望看到进展。

我尝试了以下(解密)的不同变体:

pv "$input_filename" | openssl enc -aes-256-cbc -d -salt | pv > "$output_filename"
Run Code Online (Sandbox Code Playgroud)

但这并没有要求我输入密码。我不确定如何去做?

编辑1:

我发现这个taropenssl

/sf/answers/1729312021/

虽然它可能非常有帮助,但我不太明白。

编辑2:

关于命名管道:

它几乎有效。除了闪烁的进度,我无法明显地向您展示,最终结果如下所示:

enter aes-256-cbc decryption password:
1.25GiB 0:00:16 [75.9MiB/s] [==============================================================================================================================================================================================>] 100%            
1.25GiB 0:00:10 [ 126MiB/s] [                                             <=>                                                                                                                                                                ]
Run Code Online (Sandbox Code Playgroud)

Mar*_*iae 7

你应该试试

openssl enc -aes-256-cbc -d -salt -in "$input_filename" | pv -W >> "$output_filename"
Run Code Online (Sandbox Code Playgroud)

手册

-W, --wait :

在显示任何进度信息或计算任何 ETA 之前,请等待第一个字节传输完毕。如果您要传入或传出的程序在启动之前需要额外的信息,例如将数据传输到 gpg(1) 或 mcrypt(1) 中,在处理数据之前需要密码短语,则很有用。

这正是你的情况。如果您需要查看进度条,原因在下面的评论中由周伟军明确说明,您可以将管道中的命令顺序颠倒:

pv -W "$input_filename" | openssl enc -aes-256-cbc -d -salt -out "$output_filename"
Run Code Online (Sandbox Code Playgroud)