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编码时应该注意的几个情况
Mar 04 Python
Python 专题四 文件基础知识
Mar 20 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 Python
python版本的仿windows计划任务工具
Apr 30 Python
浅谈django orm 优化
Aug 18 Python
python实现AES加密和解密
Mar 27 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
python编写俄罗斯方块
Mar 13 Python
Python爬虫爬取杭州24时温度并展示操作示例
Mar 27 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
Pycharm 2020.1 版配置优化的详细教程
Aug 07 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 检查扩展库或函数是否可用的代码
2010/04/06 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
php支付宝接口用法分析
2015/01/04 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
jquery创建div 实现代码
2009/04/27 Javascript
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
用Python编程实现语音控制电脑
2014/04/01 Python
Python编码类型转换方法详解
2016/07/01 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
python浪漫表白源码
2019/04/05 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
python eventlet绿化和patch原理
2020/11/21 Python
类的核心特性有哪些
2014/01/01 面试题
英语硕士生求职简历的自我评价
2013/10/15 职场文书
医学生求职自荐信
2013/10/25 职场文书
合作经营协议书
2014/04/17 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python