【发布时间】:2012-06-21 08:49:25
【问题描述】:
我使用 gpg (GnuPG) 1.4.11。通过gpg -c foo.pdf 加密文件foo.pdf。然后加密文件为foo.pdf.gpg,此外,原始文件foo.pdf 存在。然后我可以按预期通过gpg foo.pdf.gpg 解密foo.pdf.gpg。但是,如果我使用gpg -o foo.pdf -c foo.pdf并选择在加密时覆盖现有文件,然后使用gpg foo.pdf解密加密文件,最后选择覆盖现有文件foo.pdf(再次),文件仍然受到保护并且无法查看。
然后我再次尝试执行gpg foo.pdf(我认为第一次解密失败,这就是我再次尝试的原因)。现在文件似乎已损坏:gpg: [don't know]: 1st length byte missing。有任何想法吗?覆盖文件通常不是一个好主意吗?我希望在加密后获得一个文件foo.pdf.gpg(原始文件foo.pdf被自动删除)。
【问题讨论】:
-
也许加密到临时文件,删除原始文件并重命名?不过,听起来像一个错误。我希望 GNU 会在某个地方维护一个错误列表 - 可能会将其添加到他们的跟踪器中,并在另一台机器/平台上尝试以确保。
-
我尝试加密它(因此获得
foo.pdf.gpg)。再次解密时,它询问我是否要覆盖原始仍然存在的未加密文件foo.pdf。我选择了y,文件被覆盖了。但这一次,它可以打开了。 -
嗯,所以问题是间歇性的?
:( -
不,它是永久性的。只是我只在 decryption 上覆盖了文件(而不是在 *encryption 上)。最后,我相信无论如何都不应该使用覆盖功能。 Emacs(我的编辑器)无论如何都可以直接打开
.gpg文件(并提示输入密码)。 -
正确的。可能是加密使用了一些流内容,要求在此过程中不修改输入,但解密不需要。但是,如果它可靠地产生损坏的输出,我会将其报告为错误,以防万一。