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 07 Python
Python基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
Python实现删除时保留特定文件夹和文件的示例
Apr 27 Python
python3 判断列表是一个空列表的方法
May 04 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
django2笔记之路由path语法的实现
Jul 17 Python
简单了解python中的与或非运算
Sep 18 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 Python
Python音乐爬虫完美绕过反爬
Aug 30 Python
Python中字符串对象语法分享
Feb 24 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
phpmail类发送邮件函数代码
2012/02/20 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
python 快速排序代码
2009/11/23 Python
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
python编写爬虫小程序
2015/05/14 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
Pytorch之contiguous的用法
2019/12/31 Python
python简单的三元一次方程求解实例
2020/04/02 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
计算机专业学生求职信分享
2013/12/15 职场文书
护士感人事迹
2014/05/01 职场文书
女生节标语
2014/06/26 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
致运动员的广播稿
2015/08/19 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
德生2P3收音机开箱评测
2022/04/30 无线电