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中函数的可变参数
Sep 02 Python
python3使用matplotlib绘制散点图
Mar 19 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
python异步实现定时任务和周期任务的方法
Jun 29 Python
python中比较两个列表的实例方法
Jul 04 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
Feb 26 Python
Django-imagekit的使用详解
Jul 06 Python
详解如何修改python中字典的键和值
Sep 29 Python
python opencv角点检测连线功能的实现代码
Nov 24 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 20 Python
pytorch 两个GPU同时训练的解决方案
Jun 01 Python
python实现简单的三子棋游戏
Apr 28 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
node通过express搭建自己的服务器
2017/09/30 Javascript
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
Python threading多线程编程实例
2014/09/18 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
Python中使用partial改变方法默认参数实例
2015/04/28 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
如何基于python操作excel并获取内容
2019/12/24 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
优秀的毕业生的自我评价
2013/12/12 职场文书
七年级政治教学反思
2014/02/03 职场文书
法定代表人身份证明书
2014/09/10 职场文书
合作协议书模板2014
2014/09/26 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
处级干部考察材料
2014/12/24 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle