暴力破解凯撒密码

凯撒密码破解原理主要是通过对密文进行频率分析、统计分析和字母替换等方法来破解。

具体来说,破解者可以通过对密文中每个字母出现的频率进行统计和分析,找出出现频率最高的字母,并将其替换为最可能的明文字母。然后,可以继续对其他字母进行分析和替换,逐步还原出完整的明文。此外,还可以使用一些统计学方法来分析字母之间的关联性,从而进一步帮助破解者确定某些字母的明文对应。

然而,需要注意的是,随着现代密码学的发展和技术进步,凯撒密码等简单加密技术已经被认为是不安全的,容易被现代计算机快速破解。因此,在现代通信和信息安全领域,更加复杂和安全的加密算法被广泛使用。

在此,我们通过遍历的方式对凯撒密码进行暴力破解。

代码部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#凯撒密码暴力破解
message='kaisamimabaolipojie'
SYMBOLS='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.'
for key in range(len(SYMBOLS)):
translated=''
# 遍历原始消息中的每个字符
for symbol in message:
# 如果字符在凯撒密码的字符集中
if symbol in SYMBOLS:
# 找出字符在字符集中的索引位置
symbolIndex = SYMBOLS.find(symbol)
# 根据凯撒密码的偏移量,计算翻译后的字符在字符集中的索引位置
translatedIndex = symbolIndex - key
# 如果计算出的索引位置小于0,表示需要循环回到字符集的末尾
if translatedIndex < 0:
translatedIndex = translatedIndex + len(SYMBOLS)
# 将翻译后的字符添加到翻译后的消息中
translated = translated + SYMBOLS[translatedIndex]
else:
# 如果字符不在凯撒密码的字符集中,则直接添加到翻译后的消息中
translated = translated + symbol
# 打印出当前的偏移量以及对应的翻译后的消息
print('Key #%s: %s' % (key, translated))

结果展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Key #0: kaisamimabaolipojie
Key #1: jZhrZlhlZaZnkhonihd
Key #2: iYgqYkgkYZYmjgnmhgc
Key #3: hXfpXjfjXYXlifmlgfb
Key #4: gWeoWieiWXWkhelkfea
Key #5: fVdnVhdhVWVjgdkjedZ
Key #6: eUcmUgcgUVUifcjidcY
Key #7: dTblTfbfTUThebihcbX
Key #8: cSakSeaeSTSgdahgbaW
Key #9: bRZjRdZdRSRfcZgfaZV
Key #10: aQYiQcYcQRQebYfeZYU
Key #11: ZPXhPbXbPQPdaXedYXT
Key #12: YOWgOaWaOPOcZWdcXWS
Key #13: XNVfNZVZNONbYVcbWVR
Key #14: WMUeMYUYMNMaXUbaVUQ
Key #15: VLTdLXTXLMLZWTaZUTP
Key #16: UKScKWSWKLKYVSZYTSO
Key #17: TJRbJVRVJKJXURYXSRN
Key #18: SIQaIUQUIJIWTQXWRQM
Key #19: RHPZHTPTHIHVSPWVQPL
Key #20: QGOYGSOSGHGUROVUPOK
Key #21: PFNXFRNRFGFTQNUTONJ
Key #22: OEMWEQMQEFESPMTSNMI
Key #23: NDLVDPLPDEDROLSRMLH
Key #24: MCKUCOKOCDCQNKRQLKG
Key #25: LBJTBNJNBCBPMJQPKJF
Key #26: KAISAMIMABAOLIPOJIE
Key #27: J.HR.LHL.A.NKHONIHD
Key #28: I?GQ?KGK?.?MJGNMHGC
Key #29: H!FP!JFJ!?!LIFMLGFB
Key #30: G EO IEI ! KHELKFEA
Key #31: F0DN0HDH0 0JGDKJED.
Key #32: E9CM9GCG909IFCJIDC?
Key #33: D8BL8FBF898HEBIHCB!
Key #34: C7AK7EAE787GDAHGBA
Key #35: B6.J6D.D676FC.GFA.0
Key #36: A5?I5C?C565EB?FE.?9
Key #37: .4!H4B!B454DA!ED?!8
Key #38: ?3 G3A A343C. DC! 7
Key #39: !20F2.0.232B?0CB 06
Key #40: 19E1?9?121A!9BA095
Key #41: 0z8Dz!8!z1z. 8A.984
Key #42: 9y7Cy 7 yzy?07.?873
Key #43: 8x6Bx060xyx!96?!762
Key #44: 7w5Aw959wxw 85! 651
Key #45: 6v4.v848vwv074 054z
Key #46: 5u3?u737uvu9630943y
Key #47: 4t2!t626tut8529832x
Key #48: 3s1 s515sts7418721w
Key #49: 2rz0r4z4rsr63z761zv
Key #50: 1qy9q3y3qrq52y65zyu
Key #51: zpx8p2x2pqp41x54yxt
Key #52: yow7o1w1opo3zw43xws
Key #53: xnv6nzvznon2yv32wvr
Key #54: wmu5myuymnm1xu21vuq
Key #55: vlt4lxtxlmlzwt1zutp
Key #56: uks3kwswklkyvszytso
Key #57: tjr2jvrvjkjxuryxsrn
Key #58: siq1iuquijiwtqxwrqm
Key #59: rhpzhtpthihvspwvqpl
Key #60: qgoygsosghgurovupok
Key #61: pfnxfrnrfgftqnutonj
Key #62: oemweqmqefespmtsnmi
Key #63: ndlvdplpdedrolsrmlh
Key #64: mckucokocdcqnkrqlkg
Key #65: lbjtbnjnbcbpmjqpkjf

Process finished with exit code 0