PGP(GnuPG)-原始文件名是什么?

PGP(GnuPG)-原始文件名是什么?

约翰想寄给1.txt保罗。

他将其加密。现在文件被命名为myFile.pgp,他将其发送给了保罗。

保罗拿到了文件。

Paul 如何(如果可能的话)知道原始文件名 ( 1.txt) 是什么?是否有参数 ( --xxx) 可以查看文件名?

我在使用 GNU PGP (GnuPG)安慰模式。

答案1

使用 GnuPG,可以在gpg --list-packets

$ gpg --list-packets 测试.gpg
:pubkey enc 包:版本 3,算法 1,密钥 ID CE7B5510340F19EF
    数据:[4095位]
:加密数据包:
    长度:67
    mdc_方法:2
gpg:使用 4096 位 RSA 密钥加密,ID CE7B5510340F19EF,创建于 2009-10-31
      “蝠鲼[电子邮件保护]>”
:压缩包:算法=2
:文字数据包:
    模式 b (62),创建 1356362981,名称="passwords.txt",
    原始数据:8字节

(注:包括文件名在内的整个文字数据包是加密。如果您没有私钥,您也看不到名称。)


或者,你可以--decrypt使用--verbose(或-v -d简称):

$gpg --verbose --decrypt test.gpg > NUL
gpg:公钥是 CE7B5510340F19EF
gpg:使用子键 CE7B5510340F19EF 而不是主键 D24F6CB2C1B52632
4096 位 RSA 密钥,ID CE7B5510340F19EF,创建于 2009-10-31
         (主键 ID D24F6CB2C1B52632 上的子键)
gpg:使用 4096 位 RSA 密钥加密,ID CE7B5510340F19EF,创建于 2009-10-31
      “蝠鲼[电子邮件保护]>”
gpg:AES256加密数据
gpg:原始文件名='passwords.txt'

(在 Linux 中,请> /dev/null改用。)


如果你想解密并保存整个文件,使用--use-embedded-filename选项:

$ gpg -v --use-embedded-filename test.gpg
…无聊的输出…
gpg:原始文件名='passwords.txt'
文件“passwords.txt”已存在。覆盖吗?(y/N)n

(注:您不应该使用-d--decrypt与此选项一起使用,因为它从不使用嵌入的文件名。相反,使用“默认”操作。)


不要忘记并非全部文件有名称。在 Linux 中,gpg通常用于直接加密另一个程序的输出,而不将其保存在文件中。然后它会显示为:

$ echo 测试 | gpg --store | gpg --list-packets
:压缩包:算法=1
:文字数据包:
    模式 b (62),创建 1356362394,名称=""
    原始数据:8字节

什么时候加密(或者只是存储),可以使用 来更改嵌入的文件名--set-filename

$ echo 测试 | gpg --store --set-filename "test.txt" | gpg --list-packets
:压缩包:算法=1
:文字数据包:
    模式 b (62),创建 1356362790,名称="test.txt",
    原始数据:8字节

答案2

# just placing this here for portable gpg'd tar globs, as a bash function ')

function tgp() {
# en/decrypt fileglobs as tars with gnupg
rcpt='MYUSER'
    case "${1}" in
            e) shift; tar c $* |gpg -er ${rcpt} -o $(date +%s).tgp
            d) shift; gpg -dq ${1} |tar t && gpg -dq ${1} |tar x
            t) shift; gpg -dq ${1} |tar t
            *) echo "Usage: tpg [e|d|t] [glob|file]"
    esac
}

相关内容