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 相关文章推荐
使用rst2pdf实现将sphinx生成PDF
Jun 07 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
Jun 16 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
django列表筛选功能的实现代码
Mar 27 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
python 爬虫网页登陆的简单实现
Nov 30 Python
python Scrapy框架原理解析
Jan 04 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调用三种数据库的方法(3)
2006/10/09 PHP
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python实现字典的key和values的交换
2015/08/04 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
python3.4中清屏的处理方法
2020/07/06 Python
Python基于内置函数type创建新类型
2020/10/22 Python
Python实现简单猜数字游戏
2021/02/03 Python
师范教师毕业鉴定
2014/01/13 职场文书
儿媳婚宴答谢词
2014/01/14 职场文书
安全生产检查通报
2014/01/29 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
Python合并pdf文件的工具
2021/07/01 Python
MySQL三种方式实现递归查询
2022/04/18 MySQL