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生成随机验证码(中文验证码)示例
Apr 03 Python
Python中pip安装非PyPI官网第三方库的方法
Jun 02 Python
Python实现基本线性数据结构
Aug 22 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
微信跳一跳自动运行python脚本
Jan 08 Python
使用Eclipse如何开发python脚本
Apr 11 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
python判断数字是否是超级素数幂
Sep 27 Python
python集合常见运算案例解析
Oct 17 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
在Python中如何使用yield
Jun 07 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
PHP实现的简单缓存类
2015/07/29 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
js下用gb2312编码解码实现方法
2009/12/31 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
python3调用R的示例代码
2018/02/23 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
shell的种类有哪些
2015/04/15 面试题
新闻学毕业生自荐信
2013/11/15 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript