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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
Python 时间操作例子和时间格式化参数小结
Apr 24 Python
python清除指定目录内所有文件中script的方法
Jun 30 Python
分享Python文本生成二维码实例
Jan 06 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
python中的print()输出
Apr 12 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
IDLE下Python文件编辑和运行操作
Apr 25 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
15种PHP Encoder的比较
2007/03/06 PHP
php静态文件生成类实例分析
2015/01/03 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
更改Python命令行交互提示符的方法
2015/01/14 Python
python语音识别实践之百度语音API
2018/08/30 Python
python+mysql实现教务管理系统
2019/02/20 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
Python3 filecmp模块测试比较文件原理解析
2020/03/23 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
教育专业自荐书范文
2013/12/17 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
新员工入职欢迎词
2015/01/23 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang
Nginx反向代理学习实例教程
2021/10/24 Servers