导入备份GPG私钥后解密报错partial length invalid for packet type 20
报错含义
该报错中packet type 20对应GPG规范中的公钥加密数据包,即存储你文件加密内容的核心数据块。报错本质是GPG解析该数据包时读取到了非法的不完整长度字段,常见触发原因包括加密文件损坏、加密与解密端GPG版本不兼容、导入的私钥文件损坏三类。
解决方法
- 验证加密文件完整性
执行shasum -a 256 CompletedList.csv.secret计算当前文件的哈希值,和你备份该文件时记录的原始哈希值比对,若不一致说明文件在传输、存储过程中出现损坏,替换为未损坏的原始备份文件即可正常解密。 - 排查GPG版本兼容性
执行gpg --version查看当前Mac上的GPG版本,若你加密该文件时使用的是GPG 1.x系列版本,而当前使用的是2.3及以上的新版本GPG,会存在旧格式加密数据包的解析兼容问题。可以通过Homebrew安装低版本GPG解决:
执行brew install gnupg@1.4安装GPG 1.4版本,安装完成后使用低版本命令执行解密:gpg1 --output test --decrypt CompletedList.csv.secret - 验证私钥完整性
执行gpg --list-secret-keys确认你导入的私钥存在且指纹和备份时一致,再重新导入一次原始备份的私钥文件,导入后执行gpg --check-secret-keys验证私钥无损坏后再尝试解密。 - 强制解密(仅用于文件轻微损坏场景)
若以上方法均无效,可添加参数跳过校验尝试强制提取内容:gpg --ignore-crc-error --output test --decrypt CompletedList.csv.secret,该方法可能得到部分损坏的文件,若文件为文本格式可手动修复缺失内容。
内容的提问来源于stack exchange,提问作者Nicolas Zheng
相关产品推荐
相关产品推荐

