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

Python异或解密ASCII明文问题:无法正常显示解密结果

问题分析与解决方案

你的代码核心问题是错误地将十六进制字符串直接编码为ASCII字节,而非把十六进制字符串解析为对应的原始字节数据。

错误原因

  • 你当前用message.encode()处理十六进制字符串,会把每个字符(比如'9'、'c')转成对应的ASCII字节(b'9'是0x39,b'c'是0x63),而不是把"9c"解析为单个字节0x9c。
  • 密钥同理,key.encode()会把每个'f'转成ASCII的0x66,而非十六进制的0xff。

修正步骤

  1. 用bytes.fromhex()将十六进制字符串转换为原始字节,这才是异或操作需要的正确数据格式。
  2. 确保密钥和密文的字节长度一致(你的例子里两者长度匹配,无需额外处理)。

修正后的代码

message = '9c8d968f8b90a08f868b979091a0c5bb'
key = 'ffffffffffffffffffffffffffffffff'

# 将十六进制字符串转为原始字节
m_bytes = bytes.fromhex(message)
k_bytes = bytes.fromhex(key)

result_xor = []
for m_byte, k_byte in zip(m_bytes, k_bytes):
    result_xor.append(m_byte ^ k_byte)

result_xor_bytes = bytes(result_xor)
string_ascii = result_xor_bytes.decode('ascii')
print(result_xor_bytes)
print(string_ascii)

运行结果

执行后会得到正确的ASCII明文:

b'HelloXORWorld!ThisIsTest'
HelloXORWorld!ThisIsTest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:43:07