Python编程:实现凯撒密码加密密码的解密查询功能
凯撒密码解密实现方案
首先明确核心逻辑:你的加密是将每个字母向后偏移encryptionKey=16位(基于26个英文字母循环),解密则需要将每个字母向前偏移16位,等价于向后偏移26-16=10位(利用模运算实现循环)。
步骤1:编写解密函数
实现一个专门处理凯撒密码解密的函数,兼容大小写字母,非字母字符直接保留(如果有):
def caesar_decrypt(encrypted_str, key): decrypted = [] for c in encrypted_str: if c.isupper(): # 处理大写字母:A-Z(ASCII 65-90) original_pos = ord(c) - ord('A') decrypted_pos = (original_pos - key) % 26 decrypted.append(chr(decrypted_pos + ord('A'))) elif c.islower(): # 处理小写字母:a-z(ASCII 97-122) original_pos = ord(c) - ord('a') decrypted_pos = (original_pos - key) % 26 decrypted.append(chr(decrypted_pos + ord('a'))) else: # 非字母字符直接原样保留 decrypted.append(c) return ''.join(decrypted)
步骤2:整合到现有查询代码中
把原代码里的print(value)替换为调用解密函数的代码,修改后的查询模块代码如下:
# 原有的全局变量 encryptionKey=16 passwords = [["yahoo","XqffoZeo"],["google","CoIushujSetu"]] if(choice == '2'): #Lookup at password print("Which website do you want to lookup the password for?") for keyvalue in passwords: print(keyvalue[0]) passwordToLookup = input() for key, value in passwords: if key == passwordToLookup: # 替换原print(value)为解密后输出 decrypted_pwd = caesar_decrypt(value, encryptionKey) print(decrypted_pwd)
验证说明
用你提供的测试数据验证:
yahoo对应的加密密码XqffoZeo,解密后会输出yahoogoogle对应的加密密码CoIushujSetu,解密后会输出google
函数中的%26是为了处理字母循环边界(比如向前偏移时超出A/a的范围),确保解密逻辑覆盖所有情况。
内容的提问来源于stack exchange,提问作者KyussSun
相关产品推荐
相关产品推荐

