You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用pgpy.PGPKey.from_blob解析密钥时报ASCII-armored PGP data错误

问题诱因
  • 输入的key_string不符合ASCII装甲PGP数据的格式要求。标准ASCII装甲PGP密钥固定以-----BEGIN PGP PUBLIC KEY BLOCK-----(公钥)或-----BEGIN PGP PRIVATE KEY BLOCK-----(私钥)开头,对应结尾为-----END PGP PUBLIC KEY BLOCK-----/-----END PGP PRIVATE KEY BLOCK-----,中间为base64编码内容和校验和。如果你的密钥是二进制格式(通常后缀为.gpg/.pgp),没有做ASCII装甲编码,就会触发该错误。
  • key_string内容存在异常:首尾有多余空白、不可见特殊字符,或者装甲头/尾标识被修改、内容截断,都会导致pgpy无法识别标准PGP格式。
  • 编码错误:读取密钥时用了错误的编码格式转换二进制内容,或者密钥在传输、存储过程中被转码损坏,导致内容不符合PGP格式要求。
解决方案
  • 校验密钥格式:先打印key_string前100个字符确认是否存在标准PGP装甲头。如果确认是二进制格式密钥,直接传入字节类型数据即可,无需转成字符串:
# 读取本地二进制密钥文件示例
with open("target_key.pgp", "rb") as f:
    key_content = f.read()
pgp_key = pgpy.PGPKey.from_blob(key_content)
  • 清理ASCII装甲密钥内容:确认是ASCII格式的话,先清理首尾多余空白再传入:
clean_key = key_string.strip()
pgp_key = pgpy.PGPKey.from_blob(clean_key)
  • 修正parse方法的调用逻辑:PGPKey.parse是类方法,不需要先实例化PGPKey对象,正确用法如下:
# 解析ASCII装甲格式
pgp_key = pgpy.PGPKey.parse(key_string.strip())
# 解析二进制格式
with open("target_key.pgp", "rb") as f:
    pgp_key = pgpy.PGPKey.parse(f.read())

内容的提问来源于stack exchange,提问作者Rohith Joseph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 09:24:04