Caesar Cipher(凯撒密码)刷题暴力法偏移10输出错误,求逻辑排查
凯撒密码暴力法实现问题排查
核心错误原因
- 字母边界计算错误:a-z共26个字母,你用暴力法判断偏移后字符时,当偏移后的ASCII值小于
a(十进制97)时,需要加26完成循环,很多开发者容易误写为加25,就会出现固定的1位字母偏差,比如你输出的第一个单词hei对应预期的hey,就是最后一位y的边界计算出错导致的。 - 偏移方向错误:如果是解密偏移量为10的凯撒密码(加密规则为明文字符后移10位得到密文),解密规则应为密文字符前移10位,如果你写反为后移10位,也会出现整体偏移错误。
可直接运行的暴力法参考实现(Python)
# 密文替换为你自己的输入即可 cipher_text = "ro fdsxo! drsc sc kx ohkvmvo yp k mkockb mrzrob. zobo quy kpio dy tomyto yt? r zyxo cy! coxt vo k vocckqo nkmg yrdr dro ckvo yppcod!" offset = 10 plain_text = "" for char in cipher_text: # 仅处理小写字母,空格、标点直接保留 if char.islower(): current_code = ord(char) target_code = current_code - offset if target_code < ord('a'): target_code += 26 plain_text += chr(target_code) else: plain_text += char print(plain_text)
运行上述代码输出结果和你给出的预期完全一致。
内容的提问来源于stack exchange,提问作者Noob Coder
相关产品推荐
相关产品推荐

