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 相关文章推荐
python3中int(整型)的使用教程
Mar 23 Python
python 全文检索引擎详解
Apr 25 Python
python实现飞机大战微信小游戏
Mar 21 Python
Python给定一个句子倒序输出单词以及字母的方法
Dec 20 Python
为什么说Python可以实现所有的算法
Oct 04 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
iPython pylab模式启动方式
Apr 24 Python
基于Python实现下载网易音乐代码实例
Aug 10 Python
python实现感知机模型的示例
Sep 30 Python
python基于selenium爬取斗鱼弹幕
Feb 20 Python
python基础之文件操作
Oct 24 Python
Python实现将多张图片合成MP4视频并加入背景音乐
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
Codeigniter发送邮件的方法
2015/03/19 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
ES6的新特性概览
2016/03/10 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
python科学计算之narray对象用法
2019/11/25 Python
安装PyInstaller失败问题解决
2019/12/14 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
Django数据库迁移常见使用方法
2020/11/12 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
卫生巾广告词
2014/03/18 职场文书
《火烧云》教学反思
2014/04/12 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
张丽莉观后感
2015/06/16 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
MySQL注入基础练习
2021/05/30 MySQL