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

Python使用PGP私钥解密音频文件报缺失User ID错误如何解决

PGP私钥解密提示缺少User ID的解决方案

报错说明

你遇到的报错中文翻译为:

pgpy.errors.PGPError: 密钥不完整 - 请添加用户ID!

原因与解决方案

  • 报错根因:PGPY库执行解密操作前会校验私钥完整性,要求私钥必须绑定至少1个User ID,你当前加载的私钥文件导出时没有附带用户ID信息,触发校验失败。
  • 修复方法:在私钥解锁前手动添加合法的User ID即可,同时注意decrypt方法需要传入PGP消息对象而非直接传文件名,修正后的完整代码如下:
import pgpy

PRIVATE_KEY_FILE = "替换为你的私钥文件本地路径"
ENCRYPTED_FILE = "encryptedfilename" # 替换为你的加密音频文件路径
PASSPHRASE  = "PASSPHRASE1124124"

# 加载本地私钥文件
prv_key, _ = pgpy.PGPKey.from_file(str(PRIVATE_KEY_FILE))

# 手动添加User ID,格式可自定义,和你生成密钥时填写的信息一致即可
prv_key.add_uid("自定义用户名", email="yourmail@example.com")

print("密钥是否受密码保护:" ,prv_key.is_protected)  
with prv_key.unlock(PASSPHRASE):
    print("密钥是否解锁成功:", prv_key.is_unlocked) 
    # 先读取加密文件生成PGP消息对象
    encrypted_msg = pgpy.PGPMessage.from_file(ENCRYPTED_FILE)
    # 执行解密
    decrypted_content = prv_key.decrypt(encrypted_msg)
    # 解密后的音频内容写入新文件,二进制模式写入避免损坏
    with open("decrypted_output.mp3", "wb") as f:
        f.write(decrypted_content.message)

补充说明

如果你的私钥文件本身是完整包含User ID的,可检查是否导出私钥时只导出了私钥主体、遗漏了关联的公钥/用户ID信息,重新导出完整私钥即可无需手动添加UID。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 05:24:01