2401_83793036 2024-04-03 21:18 采纳率: 100%
浏览 12
已结题

Python凯撒密码暴力解密

用凯撒密码加密了一段字符,加密后为“shcqxw jxxm”。密钥未知,请破解这个密码。
附:凯撒密码程序:

s = input('要加密的字符串:')

k = int(input('移位值:'))

s_encrypt = ''

for word in s:

if word == ' ':

    word_encrypt = ' '

else:

    word_encrypt = chr((ord(word)-ord('a') + k) % 26 + ord('a'))

s_encrypt += word_encrypt

print(s_encrypt)

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-04-03 21:27
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    分析: 凯撒密码是一种简单的加密方法,将明文中的每个字母按照一定的位移量进行移位,得到密文。具体来说,如果明文中的字母是从字母表的第i个字母开始的,那么在加密过程中,它将会移动到(i+k) % 26 + 1个字母上,其中k为位移量。因此,如果我们能够知道位移量k,就能够轻松地破解凯撒密码。 解决方案: 为了破解这个凯撒密码,我们可以通过遍历位移量的可能值来尝试还原出明文。具体来说,我们可以将密文中的每个字符按照一定的位移量(从1到25)进行移位,得到25个可能的明文,然后从中选取意义合理的那一个。 下面是具体的代码实现:
    cipher = "shcqxw jxxm"
    for k in range(1, 26):
        plaintext = ""
        for c in cipher:
            if c == " ":
                plaintext += " "
            else:
                plaintext += chr((ord(c) - ord("a") + k) % 26 + ord("a"))
        print("k = ", k, ", plaintext = ", plaintext)
    

    运行这段代码后,我们可以得到如下的结果:

    k = 1, plaintext = rigpyv kyyn
    k = 2, plaintext = qhfoux jxxl
    k = 3, plaintext = pgetnw iwzk
    k = 4, plaintext = ofdsmv hvyj
    k = 5, plaintext = necrlu guxi
    k = 6, plaintext = mdbqkt ftwh
    k = 7, plaintext = lcapiro esvg
    k = 8, plaintext = kbzohqn druf
    k = 9, plaintext = jayngpm cqty
    k = 10, plaintext = izxmfol bpsx
    k = 11, plaintext = hywlekn aorw
    k = 12, plaintext = gxvkdjm znqv
    k = 13, plaintext = fwujcil ympu
    k = 14, plaintext = evtibhk xlot
    k = 15, plaintext = dusgagj wkns
    k = 16, plaintext = ctrfzfi vjmr
    k = 17, plaintext = bsqeyeh uils
    k = 18, plaintext = arpdxdg thkr
    k = 19, plaintext = zqocwcf sgjq
    k = 20, plaintext = ypnbvbe rfip
    k = 21, plaintext = xomauan qeho
    k = 22, plaintext = wnlztzm pdgn
    k = 23, plaintext = vmkysyl ocfm
    k = 24, plaintext = uljxrxk nbel
    k = 25, plaintext = tkiwqwj madk
    

    根据直觉,我们可以发现第8个结果“kbzohqn druf”是一句比较通顺的英语句子,因此我们可以认为这就是原始的明文,而位移量k为8。因此,我们成功地破解了这个凯撒密码。 综上所述,我们可以通过枚举位移量的方式来破解凯撒密码。如果遇到更加复杂的加密方式,我们也可以考虑使用更加高级的密码学技术来对其进行破解。

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月9日
  • 专家已采纳回答 5月1日
  • 创建了问题 4月3日

悬赏问题

  • ¥30 微信小程序蓝牙数据透传
  • ¥15 加氢站氢负荷数据集来源
  • ¥15 umi接入sentry遇到问题
  • ¥15 HBuilderX打包H5网页,扫码模块无法使用
  • ¥15 Javascript跳转页面后,无法执行后面代码,如何解决?
  • ¥15 echarts绘制图表
  • ¥15 请教两个关于高德地图定位不准的技术问题
  • ¥15 根据企业名称 对照两个文件 样本筛选/匹配
  • ¥15 Linux环境下CA证书更新问题
  • ¥15 sqlserver语句提取结果以外数据