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

将RSA解密Go函数转为Python等价实现及代码问题排查

分析Go的RsaDecrypt逻辑 & 修复你的Python代码

先帮你拆解下Go版RsaDecrypt的核心逻辑,再指出你Python代码里的问题,最后给出等价的可运行实现:

Go函数的核心逻辑

你的Go代码做了这几件关键事:

  • 解析PKCS1格式的PEM私钥(就是带-----BEGIN RSA PRIVATE KEY-----头尾标识的私钥文件)
  • 使用PKCS1v15填充模式执行RSA解密(这是最常用的经典RSA解密模式,区别于OAEP模式)
  • 传入rand.Reader是Go用来防范侧信道攻击的手段,Python的rsa库会自动处理这个细节,不用手动传随机源

你的Python代码存在的问题

  1. URL安全Base64解码错误:你的密文用了-和_替代标准Base64的+和/(这是URL安全的Base64编码),直接用Python 2的decode('base64')会解码失败
  2. 密文前后空格未处理:line变量前后的空格会导致Base64解码报错
  3. Python版本语法不兼容:你用了Python 2的语法(print decrypted、decode('base64')),在Python 3环境下会直接报错
  4. 私钥加载的潜在风险:如果你的rsa.key文件是PKCS8格式(头为-----BEGIN PRIVATE KEY-----),load_pkcs1会加载失败

正确的Python等价实现

以下是兼容Python 3的可运行代码,同时处理了URL安全Base64的问题:

import rsa
import base64

# 1. 加载PKCS1格式的PEM私钥(确保rsa.key有正确的-----BEGIN RSA PRIVATE KEY-----头尾)
with open("rsa.key", "r") as f:
    priv_key_pkcs1 = f.read()
priv_key = rsa.PrivateKey.load_pkcs1(priv_key_pkcs1)

# 2. 处理密文:清理空格 + 转URL安全Base64为标准Base64
line = ''' Lyzkh2pqrisgM_p32O6FmA8oDvzaimvrU9zyd0vyW6HBM2BznuHLbAYUMGp5oYgEHCxmZTWDs67Jt5AGulfn-LrcewCQi89wrb00ZvP69YdjwBe-7aoXBG4_zNMZ7ecLgd8WzUqBGGtVvUhCTVSBBi85mNMSCcgYHt__PFefRHZE09nHnEX25w6iR0ZZlQxuESBkuqTcs8qjUhs2Guin1xBMSWRINj4JDdCjIVHV4hdSjrINgFU-VF1sYFRibWcboYlXifROOxCF50MGtIBkcf7dnqsrR8HEXgZLnCyikhhlQAFoh2hsj4lPWNpWum-dBWj-B0b8P-hRmermDzcPqA== '''
ciphertext = line.strip()
# 替换URL安全字符为标准Base64字符
ciphertext_std = ciphertext.replace('-', '+').replace('_', '/')
# 执行Base64解码
encrypted = base64.b64decode(ciphertext_std)

# 3. 用PKCS1v15模式解密(rsa库的decrypt默认就是该模式)
try:
    decrypted = rsa.decrypt(encrypted, priv_key)
    # 如果明文是字符串,转UTF-8输出
    print(decrypted.decode('utf-8'))
except Exception as e:
    print(f"解密失败: {str(e)}")

额外注意事项

  • 如果你的私钥是PKCS8格式,需要先转换为PKCS1格式,或者改用rsa.PrivateKey.load_pkcs8方法(部分版本的rsa库需要额外依赖)
  • 如果解密时报Decryption error,大概率是密文被篡改、私钥不匹配,或者填充模式不一致(但Go和这里的Python代码用的都是PKCS1v15,模式是对齐的)
  • 若使用Python 2,只需把print(...)改为print ...,base64.b64decode改为ciphertext_std.decode('base64')即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:47:50