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中使用urllib2获取http请求状态码的代码例子
Jul 07 Python
Python实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
跟老齐学Python之玩转字符串(2)
Sep 14 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
python实现简单神经网络算法
Mar 10 Python
TensorFlow——Checkpoint为模型添加检查点的实例
Jan 21 Python
Python3实现飞机大战游戏
Apr 24 Python
如何在mac版pycharm选择python版本
Jul 21 Python
详解Python常用的魔法方法
Jun 03 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可变函数的使用详解
2013/06/14 PHP
ThinkPHP之getField详解
2014/06/20 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
python获取指定网页上所有超链接的方法
2015/04/04 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
django框架ModelForm组件用法详解
2019/12/11 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
Python中的With语句的使用及原理
2020/07/29 Python
Python扫描端口的实现
2021/01/25 Python
python wsgiref源码解析
2021/02/06 Python
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
实习评语
2013/12/16 职场文书
建议书标准格式
2014/03/12 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
青春演讲稿范文
2014/05/08 职场文书
企业标语口号
2014/06/10 职场文书
Javascript webpack动态import
2022/04/19 Javascript