栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python实现短语密码加解密

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python实现短语密码加解密

实现目标 短语密码 收获
  1. 了解了更多的古典密语加解密方法
  2. 这是一种基于一个字母对应一个字符的加解密方式

日常
  1. 写作业
  2. 编写加解密程序
  3. 给同学讲题

憧憬
  1. 能了解更多的加密解密方式,虽然我不一定从事这方面,但是确实是提升自己的一种方式
  2. 希望自己的动手能力越来越强吧
  3. 把我上课老师让编写的加解密都写一遍吧
代码部分

这是用python代码实现的

1.这部分是为了通过密钥得到加密字符对照表

from operator import itemgetter

inp=input('请输入密钥:')# university
li_inp=list(inp)
length1=len(li_inp) # 删除重复元素前元素个数
for i in range(1,length1-1):
    for j in range(0,i):
        if li_inp[i]==li_inp[j]: # 得到重复的元素的下标
            li_inp.pop(i)
            i-=1
            break
length2=len(li_inp) # 删除重复元素后元素个数
li_secret=[]
for s in range(0,26):
    li_secret.append(0)
for a1 in range(length1,length1+length2): # 从长度+1处开始
    li_secret[a1]=li_inp[a1-length1]
n=97
for a2 in range(length1+length2,26):
    while li_inp.count(chr(n))>0: # 如果该元素是明文中的字符
        n+=1
    li_secret[a2]=chr(n)
    n+=1
for a3 in range(0,length1):
    while li_inp.count(chr(n))>0: # 如果该元素是明文中的字符
        n+=1
    li_secret[a3]=chr(n)
    n+=1
st_secret=''.join(li_secret)
St_secret=st_secret.upper()
print('a-z的对照表:',St_secret)

2.上面部分代码已经实现了对照序列,下面将a-z和其对应的加密后的字符合并成一个字典,方便后面加解密操作

li_alpha=[]
for al in range(97,123):
    li_alpha.append(chr(al)) # 生成字母表
dic_secret=dict(zip(li_alpha,St_secret))
print(dic_secret)

3.这里是通过字典的key查找对应的value,实现加密字符合并,得到密文

write=list(input('请输入明文:'))
print('密文为:',end='')
secret=[]
for k in write:
    secret.append(dic_secret[k])
st_sec=''.join(secret)
print(st_sec)

4.这里是解密部分,定义了一个函数,可以通过value查找对应的key,其中value是输入的明文字符串。

def get_key(dic,value): # 通过value查找对应的key
    keys=list(dic.keys())
    values=list(dic.values())
    idx=values.index(value)
    key=keys[idx]
    return key
li_ipsec=list(input('请输入密文:'))
li_write=[]
for value in li_ipsec:
    li_write.append(get_key(dic_secret, value))
write=''.join(li_write) # 将获取的明文字符列表拼接成字符串

print('明文为:'+write)

li_write=[key for value in li_ipsec key=get_key(dic_secret,value)]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850558.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号