Encryption

如何使用 pv 顯示 openssl 加密/解密的進度?

  • April 5, 2019

我需要使用 加密並能夠解密文件openssl,目前我只需使用:

openssl enc -aes-256-cbc -salt -in "$input_filename" -out "$output_filename"

和解密:

openssl enc -aes-256-cbc -d -salt -in "$input_filename" -out "$output_filename"

但是對於大文件,我希望看到進展。

我嘗試了以下(解密)的不同變體:

pv "$input_filename" | openssl enc -aes-256-cbc -d -salt | pv > "$output_filename"

但這沒有要求我輸入密碼。我不確定該怎麼做?

編輯1:

我發現tar了這個openssl

https://stackoverflow.com/a/24704457/1997354

雖然它可能非常有幫助,但我並沒有得到太多。

編輯2:

關於命名管道:

它幾乎可以工作。除了閃爍的進度,我無法清楚地向您展示,最終結果如下所示:

enter aes-256-cbc decryption password:
1.25GiB 0:00:16 [75.9MiB/s] [==============================================================================================================================================================================================>] 100%            
1.25GiB 0:00:10 [ 126MiB/s] [                                             <=>                                                                                                                                                                ]

你應該試試

openssl enc -aes-256-cbc -d -salt -in "$input_filename" | pv -W >> "$output_filename"

手冊

-W,–等待

在顯示任何進度資訊或計算任何 ETA 之前,等待第一個字節已傳輸。如果您通過管道傳輸的程序在啟動之前需要額外的資訊,例如將數據傳輸到 gpg(1) 或 mcrypt(1),這在處理數據之前需要密碼片語,則很有用。

這正是你的情況。如果你需要看進度條,由於周偉君在下面的評論中清楚地解釋了原因,你可以顛倒管道中命令的順序:

pv -W "$input_filename" | openssl enc -aes-256-cbc -d -salt -out "$output_filename"

引用自:https://unix.stackexchange.com/questions/409791