Python实现密钥密码(加解密)实例详解


Posted in Python onApril 26, 2020

密钥密码

Python实现密钥密码(加解密)实例详解

'''
如密钥短语密码为: university -> universty
明文: abcdefghijklmnopqrstuvwxyz
密文:jklmopqwxzuniverstyabcdfgh
'''

构造映射字典

# 构造映射 asc ---> crypt
def dic(x):
  list_x =[]
  list_z = []
  for i in x:
    list_x.append(ord(i))
  for i in range(97,123):
    if i not in list_x:
      list_x.append(i)
  list_ = list_x[26-len(x)-1:]
  cr = list_+list_x[:26-len(list_)]
  for i in range(97,123):
    list_z.append(i)
  return dict(map(lambda x,y:[x,y],list_z,cr))


# 构造映射 crypt ---> asc
def dic_2(x):
  list_x =[]
  list_z = []
  for i in x:
    list_x.append(ord(i))
  for i in range(97,123):
    if i not in list_x:
      list_x.append(i)
  list_ = list_x[26-len(x)-1:]
  cr = list_+list_x[:26-len(list_)]
  for i in range(97,123):
    list_z.append(i)
  return dict(map(lambda x,y:[x,y],cr,list_z))

密钥去重

# 密钥去重
def remove(x):
  unique_x = []
  for i in x:
    if i not in unique_x:
      unique_x.append(i)
  return unique_x

加解密

# 加密
def encode():
  x = input('请输入密钥字符:')
  if not x.isalpha():
    print('请输入正确的密钥格式!')
    exit(0)
  s = input('请输入明文:')
  print('加密后字符:',end='')
  unique_x = remove(x)
  dic_ = dic(unique_x)
  for i in s:
    if i.isspace():
      print(' ', end='')
    else:
      print(chr(dic_[ord(i)]),end='')


# 解密
def decode():
  x = input('请输入密钥字符:')
  if not x.isalpha():
    print('请输入正确的密钥格式!')
    exit(0)
  s = input('请输入密文:')
  print('解密后字符:',end='')
  unique_x = remove(x)
  dic_ = dic_2(unique_x)
  for i in s:
    if i.isspace():
      print(' ',end='')
    else:
      print(chr(dic_[ord(i)]),end='')

程序入口

# 输入指令
answer = input(f'请输入所需的操作:编码/E or 解码/D: ')
try:
  if answer.upper() == 'E':
    encode()
  elif answer.upper() == 'D':
    decode()
  else:
    print('输入错误!')
except KeyError:
  print('请正确输入小写字母!')

实现效果

注:可以输入空格
输出大小写:请自行修改

请输入所需的操作:编码/E or 解码/D:  e
请输入密钥字符:university
请输入明文:abcdefghijklmnopqrstuvwxyz
加密后字符:jklmopqwxzuniverstyabcdfgh

请输入所需的操作:编码/E or 解码/D:  d
请输入密钥字符:university
请输入密文:jklmopqwxzuniverstyabcdfgh
解密后字符:abcdefghijklmnopqrstuvwxyz

到此这篇关于Python实现密钥密码(加解密)的文章就介绍到这了,更多相关python 密钥密码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
Python使用multiprocessing创建进程的方法
Jun 04 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
python多任务及返回值的处理方法
Jan 22 Python
Python enumerate函数遍历数据对象组合过程解析
Dec 11 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
用Python生成HTML表格的方法示例
Mar 06 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
Python基于QQ邮箱实现SSL发送
Apr 26 #Python
Eclipse配置python默认头过程图解
Apr 26 #Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 #Python
在服务器上安装python3.8.2环境的教程详解
Apr 26 #Python
Python ini文件常用操作方法解析
Apr 26 #Python
python实现音乐播放和下载小程序功能
Apr 26 #Python
使用Python内置模块与函数进行不同进制的数的转换
Apr 26 #Python
You might like
几个php应用技巧
2008/03/27 PHP
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
vue实现验证用户名是否可用
2021/01/20 Vue.js
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
Django 路由控制的实现
2019/07/17 Python
Python如何实现的二分查找算法
2020/05/27 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
摄影专业毕业生求职信
2014/03/13 职场文书
六一亲子活动总结
2014/07/01 职场文书
银行贷款收入证明
2014/10/17 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
浅谈如何提高PHP代码的质量
2021/05/28 PHP