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

Python 3加密代码需实现大小写不敏感功能求助

Python 3大小写不敏感加密代码修复方案

我看了你的加密代码,现在遇到的大小写混合单词加密失效的问题,主要是因为代码只处理了小写字母,完全没管大写字母的情况,另外模运算的逻辑也可以简化优化。下面给你调整后的代码,既能实现大小写不敏感的加密(加密时不区分原字母大小写,但加密后保留原字母的大小写格式),还修复了原代码里的计算bug:

import sys 

# 从命令行导入参数
arg1 = str(sys.argv[1])
arg2 = str(sys.argv[2]) 
arg3 = str(sys.argv[3]) 
arg4 = str(sys.argv[4]) 
arg5 = str(sys.argv[5]) 
arg6 = str(sys.argv[6]) 
arg7 = str(sys.argv[7]) 
arg8 = str(sys.argv[8]) 

space = ' ' 
upper =['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] 
lower =['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] 

if arg8 == "enc": 
    key = int(arg6) # 加密密钥
    # 用with语句自动管理文件,不用手动close,更安全
    with open(arg4, "a") as file1, open(arg2, 'r') as r: 
        for line in r: 
            for char in line: 
                if char == space:
                    file1.write(space)
                elif char in lower:
                    # 找到小写字母的索引,加密后仍输出小写
                    idx = lower.index(char)
                    new_idx = (idx + key) % 26  # 直接用%26简化判断,避免越界
                    file1.write(lower[new_idx])
                elif char in upper:
                    # 新增大写字母处理分支,加密后保持大写
                    idx = upper.index(char)
                    new_idx = (idx + key) % 26
                    file1.write(upper[new_idx])
                else:
                    # 非字母非空格的字符,直接原封不动写入(可选,根据需求调整)
                    file1.write(char)
    print("加密完成!")

主要改动说明:

  • 新增大写字母处理:增加了elif char in upper的分支,专门处理大写字母的加密,加密后输出对应的大写字母,保证原大小写格式不变
  • 简化模运算逻辑:直接用(idx + key) % 26代替原来的判断,不管密钥多大都不会越界,逻辑更清晰
  • 优化文件管理:把两个文件都放到with语句里,自动关闭文件,避免手动close可能出现的遗漏
  • 增加非字母字符处理:如果遇到非字母非空格的字符(比如数字、符号),直接原封不动写入,避免丢失内容(如果不需要可以删掉这个分支)

这样修改后,不管是大写、小写还是混合大小写的单词,都能正常加密,完全实现大小写不敏感的加密效果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:23:03