Encryption
如何使用 pv 顯示 openssl 加密/解密的進度?
我需要使用 加密並能夠解密文件
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"