20

我在一个目录中有数百个 gpg 加密文件,格式为 filename.xyz.gpg,其中“xyz”是一些任意扩展名。我需要解密所有文件以生成 filename.xyz 解密的方式是我不必手动输入每个文件的密码。

我已经为目录“测试”尝试了以下内容:

for file in 'ls Testing'; do (echo <password>|gpg --passphrase-fd 0 -d $file 
--output     $file.decrypted);

我只是以命令提示符>结束,但没有任何反应。

我的语法有什么问题?有没有更有效的方法可以在没有 bash shell 循环的情况下做到这一点?

4

5 回答 5

27

gpg可以解密多个文件,因此您不需要编写循环。

试试下面的。您需要输入一次密码。

gpg --passphrase-fd 0 --decrypt-files *.gpg 
于 2013-09-12T16:17:38.237 回答
16

正如手册中所说,您需要添加--batch选项:

   --passphrase-fd n
          Read the passphrase from file descriptor n. Only the first line will be read from file descriptor n. If you use 0 for n, the passphrase will be read from
          STDIN. This can only be used if only one passphrase is supplied.  Note that this passphrase is only used if the option --batch has also been given.  This is
          different from gpg.

   --passphrase string
          Use string as the passphrase. This can only be used if only one passphrase is supplied. Obviously, this is of very questionable security on a multi-user sys‐
          tem. Don't use this option if you can avoid it.  Note that this passphrase is only used if the option --batch has also been given.  This is different from
          gpg.

您可以使用以下两种形式中的任何一种:

echo "passphrase" | gpg --passphrase-fd 0 --batch -d --output "decrypted.file" "file.gpg"

或更简单:

gpg --passphrase "passphrase" --batch -d --output "decrypted.file" "file.gpg"

您可以尝试这样的脚本来提取文件:

#!/bin/bash

read -rsp "Enter passphrase: " PASSPHRASE

for FILE in *.*.gpg; do
    echo "Extracting $FILE to ${FILE%.gpg}."
    echo "$PASSPHRASE" | gpg --passphrase-fd 0 --batch -d --output "${FILE%.gpg}" "$FILE"
done
于 2013-09-12T16:22:47.093 回答
5

我成功了

gpg --decrypt-files *.gpg

参看。https://serverfault.com/a/388068/103585

于 2017-02-24T05:58:28.143 回答
0

我在 gpg --decrypt-files * 但不是 *.gpg

于 2018-08-13T03:28:55.437 回答
0

它对我来说适用于以下命令:

对于单个文件: gpg --decrypt --input C:\PGPFiles\[encryptedfilename.pgp] --passphrase [yourpassphrase]

对于多个文件: gpg --decrypt --input C:\PGPFiles\* --passphrase [yourpassphrase]

于 2019-09-12T10:11:53.743 回答