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

Python文件加解密问题:如何实现E选项加密的逆向解密?

文件加解密代码修复方案

原代码核心问题

  • 加密逻辑冗余错误:原加密代码在for循环内部每次都将当前加密结果转成二进制写入文件,导致文件被多次覆盖,最终得到的是错误的加密结果。
  • 解密逻辑完全偏离逆向流程:原解密代码直接对二进制字符串的单个字符('0'/'1')执行ord(i)+3操作,完全不符合加密的逆向步骤。加密流程是「明文→ASCII减3→转8位二进制→拼接写入」,解密必须逆向执行「读取二进制串→按8位拆分→转十进制→转字符→ASCII加3→明文」。

修复后的完整代码

def read_file_content(file_path):
    with open(file_path, 'r') as f:
        return f.read().strip()

def write_file_content(file_path, content):
    with open(file_path, 'w') as f:
        f.write(content)

Selection = input('请选择操作:输入E加密文件,输入D解密文件\n')
if Selection == "E":
    # 读取原始明文
    JediMessage = read_file_content('HolocronMessage.txt')
    JediEncrypted = ""
    # 对每个字符执行ASCII减3加密
    for i in JediMessage:
        JediEncrypted += chr(ord(i) - 3)
    # 将加密后的字符统一转成8位二进制字符串并拼接
    binary_encrypted = ''.join(format(ord(c), '08b') for c in JediEncrypted)
    # 写入加密结果
    write_file_content('HolocronMessage.txt', binary_encrypted)
    print("加密完成,文件内容已更新为二进制加密串")
elif Selection == "D":
    # 读取二进制加密串
    binary_encrypted = read_file_content('HolocronMessage.txt')
    # 校验加密文件格式合法性
    if len(binary_encrypted) % 8 != 0:
        print("错误:加密文件格式无效,长度不是8的倍数")
    else:
        JediDecrypted = ""
        # 按每8位一组拆分二进制串,逆向还原
        for i in range(0, len(binary_encrypted), 8):
            # 8位二进制转十进制,再转成加密时的字符
            encrypted_char = chr(int(binary_encrypted[i:i+8], 2))
            # ASCII加3还原原始字符
            JediDecrypted += chr(ord(encrypted_char) + 3)
        # 写入还原后的明文
        write_file_content('HolocronMessage.txt', JediDecrypted)
        print("解密完成,文件已还原为原始内容")
else:
    print("无效选择,请输入E或D")

关键修复说明

  • 新增read_file_content和write_file_content函数,统一处理文件读写,避免资源泄漏和重复代码。
  • 加密流程优化:先完整处理所有字符得到加密字符串,再统一转换为二进制串写入文件,解决循环内重复写入的问题。
  • 解密流程修正:
    1. 先校验二进制串长度(必须是8的倍数,保证每个字符对应完整的8位二进制)。
    2. 按8位拆分二进制串,将每组转换为十进制整数,还原出加密时的字符。
    3. 对每个加密字符执行ASCII加3操作,还原原始明文后写入文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:50:28