凯撒密码暴力破解的算法实现(python)
凯撒密码暴力破解的算法实现(python)
#凯撒密码破解
message='guv6Jv6Jz!J6rp5r7Jzr66ntrM'
SYMBOLS='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.'
#循环遍历所有可能的KEY
for key in range(len(SYMBOLS)):
#将translateed设置为空字符串很重要
#translated的值
translated=''
#其余部分和凯撒相同
#循环遍历message中的每一个字符
for symbol in message:
# 注意:只能加解密SYMBOLS字符串中的符号
if symbol in SYMBOLS:
symbolIndex = SYMBOLS.find(symbol)
# 执行解密
translatedIndex = symbolIndex - key
# 如果需要,执行回环
if translatedIndex<0:
translatedIndex = translatedIndex + len(SYMBOLS)
translated = translated + SYMBOLS[translatedIndex]
else:
# 添加未加解密的字符
translated = translated + symbol
#显示每一个可能的解密值
print('Key #%s:%s'%(key,translated))#凯撒密码
#要加解密的字符串
message='This is my secret message.'
#加解密密钥
key=13
#程序是加密还是解密
mode='encrypt' #设置为encrypt或decrypt
#可能被加解密的符号
SYMBOLS='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.'
#存储消息的加解密形式
translated=''
for symbol in message:
#注意:只能加解密SYMBOLS字符串中的符号
if symbol in SYMBOLS:
symbolIndex=SYMBOLS.find(symbol)
#执行加解密
if mode =='encrypt':
translatedIndex=symbolIndex+key
if mode =='decrypt':
translatedIndex=symbolIndex-key
#如果需要,执行回环
if translatedIndex>=len(SYMBOLS):
translatedIndex=translatedIndex-len(SYMBOLS)
elif translatedIndex <= 0:
translatedIndex=translatedIndex+len(SYMBOLS)
translated=translated+SYMBOLS[translatedIndex]
else:
#添加未加解密的字符
translated=translated+symbol
#输出translated字符串
print(translated)
从此人间江湖,多出一个酒鬼少年郎。