Python实现仿射密码的思路详解


Posted in Python onApril 23, 2020

仿射密码思路:

1、加解密公式:

Python实现仿射密码的思路详解

2、构造对应字典:

Python实现仿射密码的思路详解

3、代码实现

构造字典,建立映射关系:

# 构造字典,'A' --> 0 ...
def char_2_num(x):
  list_s = []
  list_num = []
  for i in range(26):
    c = chr(i + 65)
    list_s.append(c)
    list_num.append(i)
  c_2_n = dict(map(lambda x, y: [x, y], list_s, list_num))
  return c_2_n[f'{x}']


# 构造字典,0 ---> 'A' ...
def num_2_char(x):
  list_s = []
  list_num = []
  for i in range(26):
    c = chr(i + 65)
    list_s.append(c)
    list_num.append(i)
  n_2_c = dict(map(lambda x, y: [x, y], list_num, list_s))
  print(n_2_c[x],end='')

实现加密:

# 编码
def encode():
  s = input('输入需要编码的字符: ')
  print('编码后的结果为: ',end='')
  for j in s:
    if j.isspace():
      print(' ',end='')
    else:
      ek = a * char_2_num(j) + b
      result = ek % 26
      num_2_char(result)

求模26下a的逆,实现解密:

# 求模26下a的逆
def inv_(x):
  for inv_a in range(1,26,2):
    for j in range(27):
      if x * inv_a == 26 * j + 1:
        return inv_a

# 解码
def decode():
  s = input('输入需要解码的字符: ')
  print('解码后的结果为: ',end='')
  for j in s:
    if j.isspace():
      print(' ',end='')
    else:
      dk = inv_(a) * (char_2_num(j) - b)
      result = dk % 26
      num_2_char(result)

函数入口:

# 输入指令
answer = input(f'请输入所需的操作:编码/E or 解码/D: ')

# 输入参数a,b
a = int(input('请输入a:'))
b = int(input('请输入b: '))

try:
  if answer.upper() == 'E':
    encode()
  elif answer.upper() =='D':
    decode()
  else:
    print('输入错误!')
except KeyError:
  print('请正确输入大写字母!')

加密效果:

请输入所需的操作:编码/E or 解码/D:  E
请输入a:5
请输入b: 7
输入需要编码的字符: TODAY IS SO HOT
编码后的结果为: YZWHX VT TZ QZY

解密效果:

请输入所需的操作:编码/E or 解码/D:  D
请输入a:5
请输入b: 7
输入需要解码的字符: YZWHX VT TZ QZY
解码后的结果为: TODAY IS SO HOT

到此这篇关于Python实现仿射密码的思路详解的文章就介绍到这了,更多相关python 仿射密码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
python定时执行指定函数的方法
May 27 Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 Python
python 日志增量抓取实现方法
Apr 28 Python
python实现单链表中删除倒数第K个节点的方法
Sep 28 Python
使用Python实现将list中的每一项的首字母大写
Jun 11 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 Python
Selenium浏览器自动化如何上传文件
Apr 06 Python
利用Python实现模拟登录知乎
May 25 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 #Python
python中matplotlib实现随鼠标滑动自动标注代码
Apr 23 #Python
使用matplotlib动态刷新指定曲线实例
Apr 23 #Python
Flask模板引擎Jinja2使用实例
Apr 23 #Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 #Python
在matplotlib中改变figure的布局和大小实例
Apr 23 #Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 #Python
You might like
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
PHP 实现文件压缩解压操作的方法
2019/06/14 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
Node.js简单入门前传
2017/08/21 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
用Python制作简单的钢琴程序的教程
2015/04/01 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Python自动化测试笔试面试题精选
2020/03/12 Python
python对XML文件的操作实现代码
2020/03/27 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
成人毕业生自我鉴定
2013/10/18 职场文书
企业给企业的表扬信
2014/01/13 职场文书
老同学聚会感言
2014/02/23 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
走进科学观后感
2015/06/18 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
Python实现视频自动打码的示例代码
2022/04/08 Python
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers