python解密系统

接上文,咱实现了加密,那真是可歌可泣,可喜可贺,鞭炮齐鸣,锣鼓喧天哇

万一哪天叫你解密嘞?一头雾水了吧

还是那个例子,如果将题目中的加密改成解密,阁下会如何应对?

题目再现

 首先,老规矩,直接看重点,对一个字不看,多了直接掏他裆间

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='')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值