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

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,解密后会输出yahoo
  • google对应的加密密码CoIushujSetu,解密后会输出google

函数中的%26是为了处理字母循环边界(比如向前偏移时超出A/a的范围),确保解密逻辑覆盖所有情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:45:28