gpt4 book ai didi

security - 解密GPG消息时出现mdc错误

转载 作者:行者123 更新时间:2023-12-04 06:46:23 24 4
gpt4 key购买 nike

我有一个客户端和服务器系统,它定期运行计划任务并通过 gpg 加密的 xml 文件进行通信。所有必需的公钥都已在客户端和服务器之间成功交换。加密和解密调用是从批处理文件中完成的。
加密语法
gpg.exe --batch --yes --recipient %1 --output %4 --passphrase %5 --local-user %2 --sign --encrypt %3
解密语法
gpg.exe --batch --yes --output %3 --passphrase %4 --decrypt %2 2>%1
客户端创建一个 xml 文件,使用服务器公钥使用 gpg 对其进行加密,使用私钥签名并将其上传到服务器的 ftp 站点。服务器定期检查 ftp 文件夹中的新文件。对于任何新文件,它使用 gpg 解密,然后处理文件中的 xml。
对于服务器尝试解密的一些 xml 文件,我收到如下错误:

gpg: block_filter 00AA8400: read error (size=7841,a->size=395)

gpg: mdc_packet with invalid encoding

gpg: decryption failed: invalid packet

gpg: block_filter: pending bytes!


需要注意的一点是,这不会发生在所有文件上,而是发生在某些文件上。我无法找到它失败的文件之间的任何共性。
有没有人熟悉这个错误的含义?欢迎任何有助于追踪此问题的建议。

最佳答案

终于想通了。 gpg 不是这里的罪魁祸首。当服务器检查指定文件夹中的文件时,它使用 Delphi 上的 Append(fileHandler) 方法来测试文件是否可以打开。但是这种方法有一个特殊的条件,好像它在文件的最后 128 字节块中找到了 ascii 字符 26(即 CTRL+z),它将删除该字符中的所有内容,直到文件末尾。这导致部分加密文件被删除,随后在通过gpg解密时导致上述错误。在我用 Reset(fileHandler) 替换 Append 方法后,加密文件不再被修改,解密工作完美。

关于security - 解密GPG消息时出现mdc错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3719418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com