接上文,咱实现了加密,那真是可歌可泣,可喜可贺,鞭炮齐鸣,锣鼓喧天哇
万一哪天叫你解密嘞?一头雾水了吧
还是那个例子,如果将题目中的加密改成解密,阁下会如何应对?
题目再现
首先,老规矩,直接看重点,对一个字不看,多了直接掏他裆间
ps:因为是解密,所以咱得把条件反过来看
"""
HELLO -- IFMMP -- HELLO
HELLO -- JGNNQ -- HELLO
明文 :'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
密钥A:'BCDEFGHIJKLMNOPQRSTUVWXYZA'
密钥B:'CDEFGHIJKLMNOPQRSTUVWXYZAB'
"""
咱能一眼看出来,下标(索引值)的方法是不是挺简单的,一个改过来,另一个就改回去嘛
哪来的让他回哪去
所以只需要在源代码上做一点点修改就欧克啦!!!!
if my == 'A':
for i in mw:
a = Mingwen.find(i)
s = s+A[a]
if my == 'B':
for i in mw:
a = Mingwen.find(i)
s = s+B[a]
if my == 'C':
for i in mw:
a = Mingwen.find(i)
s = s+C[a]
这一块,就是要修改的地方啦
咋改捏,很简单,我们可以看到,每次循环找到字符对应的下标(索引值的时候),是直接加的吧
改回去就减回去呗
欧克!理论存在,开始实践
if my == 'A':
for i in mw:
a = Mingwen.find(i)
s = s+A[a] #改这个地方就行,将A[a]改成A[a-2]
测试一波
欧克,嘎嘎板正
解释下为啥要-2,为了方便就直接写在里面了
'''
HELLO -- IFMMP
HELLO -- JGNNQ
输入 : F I M P
明文 :A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密钥A:B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
输出 : E H L O
'''
可以发现哈,如果要倒回来,那I的下标(索引值)是不是就要往回拉2个位置,才能到正确的位置上
所以,代码奉上
"""
LIN_Mengli
IFMMP -- HELLO
JGNNQ -- HELLO
明文 :'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
密钥A:'BCDEFGHIJKLMNOPQRSTUVWXYZA'
密钥B:'CDEFGHIJKLMNOPQRSTUVWXYZAB'
"""
import random
s = ''
my = random.choice('A')
print('密钥为:', my)
Mingwen = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
A = list('BCDEFGHIJKLMNOPQRSTUVWXYZA')
B = list('CDEFGHIJKLMNOPQRSTUVWXYZAB')
C = list('DEFGHIJKLMNOPQRSTUVWXYZABC')
mw = list(input('请输入明文:'))
if my == 'A':
for i in mw:
a = Mingwen.find(i)
s = s+A[a-2]
if my == 'B':
for i in mw:
a = Mingwen.find(i)
s = s+B[a-2]
if my == 'C':
for i in mw:
a = Mingwen.find(i)
s = s+C[a-2]
for j in s:
print(j, end='')