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
相关产品推荐
相关产品推荐

