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的Django框架中的中间件
Jul 24 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
Python实现字符串格式化的方法小结
Feb 20 Python
python实现简单点对点(p2p)聊天
Sep 13 Python
Django读取Mysql数据并显示在前端的实例
May 27 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
Python collections模块使用方法详解
Aug 28 Python
python nmap实现端口扫描器教程
May 28 Python
python将字符串转变成dict格式的实现
Nov 18 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
python 如何停止一个死循环的线程
Nov 24 Python
分享提高 Python 代码的可读性的技巧
Mar 03 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
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
PHP读取Excel类文件
2017/05/15 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
php xhprof使用实例详解
2019/04/15 PHP
php精度计算的问题解析
2019/06/21 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
再谈JavaScript线程
2015/07/10 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
Python模拟三级菜单效果
2017/09/11 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
破解安装Pycharm的方法
2018/10/19 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
环境科学毕业生自荐信
2013/11/21 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
房屋质量投诉书
2015/07/02 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android