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

Python代码执行decrypt方法无返回值问题求助

问题分析与修复

核心问题

解密逻辑里的txt.decode()是错误操作——加密后生成的是二进制密文字节串,解密时需要直接传入字节数据,而非先解码成字符串。

具体错误点

  • 加密流程:txt.encode()将字符串转为字节,加密后输出的negocio是二进制密文。
  • 解密流程:若直接把加密得到的字节串传给txt参数,执行txt.decode()会试图将非文本编码的密文转成字符串,这会触发编码错误,导致代码静默崩溃(无任何输出)。

修复后的代码

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

def enc_pubK(value, txt, path_chv_pub=None, path_chv_priv=None):
    if value == 1:
        if path_chv_pub:
            with open(str(path_chv_pub), 'rb') as arq_pub:
                chave_publica = RSA.import_key(arq_pub.read())
                cipher = PKCS1_OAEP.new(chave_publica)
                negocio = cipher.encrypt(txt.encode())
                print(negocio)
                return negocio  # 返回密文,方便后续解密调用
    elif value == 0:
        if path_chv_priv:
            with open(str(path_chv_priv), "rb") as arq_pri:
                cha_pri = RSA.import_key(arq_pri.read())
                decipher = PKCS1_OAEP.new(cha_pri)
                vigor = decipher.decrypt(txt)  # 直接传入字节密文
                print(vigor.decode())  # 解密后转字符串输出
                return vigor.decode()

额外优化建议

  1. 加密后返回密文而非仅打印,方便后续解密直接调用结果。
  2. 增加异常捕获(如文件不存在、密钥格式错误、解密失败等),便于排查问题。
  3. 用elif替代独立if,逻辑更严谨。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:00:01