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 thread 并发且顺序运行示例
Apr 09 Python
Python中的startswith和endswith函数使用实例
Aug 25 Python
python多重继承实例
Oct 11 Python
Python中用字符串调用函数或方法示例代码
Aug 04 Python
Python判断有效的数独算法示例
Feb 23 Python
Python如何实现FTP功能
May 28 Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 Python
Python库安装速度过慢解决方案
Jul 14 Python
基于Python正确读取资源文件
Sep 14 Python
PyTorch中clone()、detach()及相关扩展详解
Dec 09 Python
完美解决Pycharm中matplotlib画图中文乱码问题
Jan 11 Python
Python OpenCV实现图形检测示例详解
Apr 08 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实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
python实现DES加密解密方法实例详解
2015/06/30 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
python3多线程知识点总结
2019/09/26 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
django框架auth模块用法实例详解
2019/12/10 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
美国老牌主机服务商:iPage
2016/07/22 全球购物
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
最新茶叶店创业计划书
2014/01/14 职场文书
大学生作弊检讨书
2014/02/19 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
晚会开场白和结束语
2015/05/29 职场文书
安全第一课观后感
2015/06/18 职场文书
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript