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

编写凯撒密码暴力破解程序时遭遇KeyError:26错误求助

解决凯撒密码暴力破解的KeyError问题

嘿,我帮你捋捋这个问题!你碰到的KeyError: 26其实是个很典型的索引越界问题——毕竟英文字母一共就26个,对应的索引应该是0到25,结果你计算出来的索引跑到26去了,自然找不到对应的键值啦。

错误原因拆解

从报错的代码行ciphertext += alpha2[ (alpha1[i] + brutekey)]能看出来:当某个字母的索引(比如Z对应的25)加上偏移量brutekey后,结果变成了26,而alpha2里根本没有这个键/索引,直接就抛出了KeyError。

修复方案

解决这个问题的核心就是让偏移后的结果始终落在0-25的范围内,用取模运算%26就能完美实现循环偏移:

# 加密时的修正代码
ciphertext += alpha2[ (alpha1[i] + brutekey) % 26 ]

举个例子,25+1=26,26%26=0,刚好对应字母表的第一个字母,完全符合凯撒密码的循环逻辑。

如果是暴力破解解密的场景,还要注意是减去偏移量,同样要加取模避免负数索引(比如0-1=-1,-1%26=25,刚好对应最后一个字母):

# 解密时的修正代码
plaintext += alpha2[ (alpha1[i] - brutekey) % 26 ]

小提示

暴力破解的时候,你可以直接遍历0到25的所有偏移值,每个偏移都跑一次解密逻辑,把所有结果输出,让用户一眼就能找到合理的明文~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:26:18