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中函数的多种格式和使用实例及小技巧
Apr 13 Python
Python中类的定义、继承及使用对象实例详解
Apr 30 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
python数字图像处理之高级形态学处理
Apr 27 Python
python实现烟花小程序
Jan 30 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
Python类的绑定方法和非绑定方法实例解析
Mar 04 Python
python实现ftp文件传输功能
Mar 20 Python
Python类的动态绑定实现原理
Mar 21 Python
python实现简单学生信息管理系统
Apr 09 Python
通过实例了解python__slots__使用方法
Sep 14 Python
实例详解Python的进程,线程和协程
Mar 13 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中替换换行符的几种方法小结
2012/10/15 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
javascript模块化简单解析
2016/04/07 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
Python字符串处理函数简明总结
2015/04/13 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
节能标语大全
2014/06/21 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
2014年质检员工作总结
2014/11/18 职场文书
十岁生日答谢词
2015/01/05 职场文书
租赁协议书
2015/01/27 职场文书
小学教师年度个人总结
2015/02/05 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
vue elementUI批量上传文件
2022/04/26 Vue.js
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android