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中列表(list)操作方法汇总
Aug 18 Python
Python通过DOM和SAX方式解析XML的应用实例分享
Nov 16 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
基于Django的ModelForm组件(详解)
Dec 07 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
Apr 15 Python
python django中8000端口被占用的解决
Dec 17 Python
Python中filter与lambda的结合使用详解
Dec 24 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
PyTorch的torch.cat用法
Jun 28 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 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执行zip与rar解压缩方法实现代码
2010/12/05 PHP
初识laravel5
2015/03/02 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
下载给定网页上图片的方法
2014/02/18 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
python 连接sqlite及简单操作
2017/06/30 Python
Python3 处理JSON的实例详解
2017/10/29 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
django如何连接已存在数据的数据库
2018/08/14 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
应届生服装设计自我评价
2013/09/20 职场文书
中医药大学市场营销专业自荐信
2013/09/29 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
企业元宵节主持词
2014/03/25 职场文书
青春励志演讲稿
2014/04/29 职场文书
安全演讲稿大全
2014/05/09 职场文书
廉政承诺书
2015/01/19 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
pytorch加载预训练模型与自己模型不匹配的解决方案
2021/05/13 Python
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis