前两篇文章介绍了如何使用MFC架构程序和如何在MFC中调用Python程序。今天介绍如何在python中实现加解密功能,包括urlencode、unicode、ascii和16进制互转、rot13、base64、QWE、阿特巴什、摩斯码、ADFGX、培根、凯撒、维吉尼亚等算法。
一、加密程序
urlencode

def Myurldecode(m_str):return quote(m_str)

unicode

def Myunicode(m_str):return m_str.encode('unicode_escape')

大小写互换

def Myswapcase(m_str):return m_str.swapcase()

ascii转16进制

def AsciiToHex(m_str):return binascii.b2a_hex(m_str)

16进制转ascii

def HexToAscii(m_str):return binascii.a2b_hex(m_str)  

ROT13

def S_rot13(s, OffSet=13):def encodeCh(ch):f=lambda x: chr((ord(ch)-x+OffSet) % 26 + x)return f(97) if ch.islower() else (f(65) if ch.isupper() else ch)return ''.join(encodeCh(c) for c in s)

Bash64

def MyBase64(m_str):str1 = base64.b64encode(m_str)return str1 

QWE编码

QWE_dicts = {'K':'a','X':'b','V':'c','M':'d','C':'e','N':'f','O':'g','P':'h','H':'i','Q':'j','R':'k','S':'l','Z':'m','Y':'n','I':'o','J':'p','A':'q','D':'r','L':'s','E':'t','G':'u','W':'v','B':'w','U':'x','F':'y','T':'z'};
def S_QWE(S_str):result ='';S_str = S_str.upper();for i in range(len(S_str)):if S_str[i].isupper():result += ''.join(QWE_dicts[S_str[i]]);else:result += ''.join(S_str[i]) ;return result;  

阿特巴什(Atbash)编码

Atbash_dicts = {'A':'z','B':'y','C':'x','D':'w','E':'v','F':'u','G':'t','H':'s','I':'r','J':'q','K':'p','L':'o','M':'n','N':'m','O':'l','P':'k','Q':'j','R':'i','S':'h','T':'g','U':'f','V':'e','W':'d','X':'c','Y':'b','Z':'a'};
def S_Atbash(S_str):result ='';S_str = S_str.upper();for i in range(len(S_str)):if S_str[i].isupper():result += ''.join(Atbash_dicts[S_str[i]]);else:result += ''.join(S_str[i]) ;return result;  

摩斯码(Morse)

Morse_encoding = {'A': '.-','B': '-...','C': '-.-.','D': '-..','E': '.','F': '..-.','G': '--.','H': '....','I': '..','J': '.---','K': '-.-','L': '.-..','M': '--','N': '-.','O': '---','P': '.--.','Q': '--.-','R': '.-.','S': '...','T': '-','U': '..-','V': '...-','W': '.--','X': '-..-','Y': '-.--','Z': '--..','0': '-----',  '1': '.----',  '2': '..---','3': '...--',  '4': '....-',  '5': '.....','6': '-....',  '7': '--...',  '8': '---..', '9': '----.','.':'.-.-.-', ',':'--..--', ':':'---...', '?':'..--..','-':'-....-', '/':'-..-.', '=':'-...-', '@': '...-.-','!':'...-.-', '\n':'', '%':'.-.-', ',':'--..--',';':'-.-.-.', '_':'..--.-', '"':'.-..-.', '(':'-.--.',')':'-.--.-', '$':'...-..-', ' ':' ', "'": '.----.' }
def S_Morse(S_str):result ='';S_str = S_str.upper();for i in range(len(S_str)):result += Morse_encoding[S_str[i]] + ' 'return result;  

培根编码(Bacon)

Bacon_dicts1 = {'a':'aaaaa','b':'aaaab','c':'aaaba','d':'aaabb','e':'aabaa','f':'aabab','g':'aabba','h':'aabbb','i':'abaaa','j':'abaab','k':'ababa','l':'ababb','m':'abbaa','n':'abbab','o':'abbba','p':'abbbb','q':'baaaa','r':'baaab','s':'baaba','t':'baabb','u':'babaa','v':'babab','w':'babba','x':'babbb','y':'bbaaa','z':'bbaab'};Bacon_dicts2 = {'a':'AAAAA','b':'AAAAB','c':'AAABA','d':'AAABB','e':'AABAA','f':'AABAB','g':'AABBA','h':'AABBB','i':'ABAAA','j':'ABAAA','k':'ABAAB','l':'ABABA','m':'ABABB','n':'ABBAA','o':'ABBAB','p':'ABBBA','q':'ABBBB','r':'BAAAA','s':'BAAAB','t':'BAABA','u':'BAABB','v':'BAABB','w':'BABAA','x':'BABAB','y':'BABBA','z':'BABBB'};
def S_Bacon(S_str):result ='Mode1: 'S_str = S_str.lower();for i in range(len(S_str)):if S_str[i].islower():result += ''.join(Bacon_dicts1[S_str[i]])else:result += ''.join(S_str[i]) result += "\r\nMode2: "for j in range(len(S_str)):if S_str[j].islower():result += ''.join(Bacon_dicts2[S_str[j]])else:result += ''.join(S_str[j]) return result

ADFGX编码

ADFGX_dicts = {'b':'AA','t':'AD','a':'AF','l':'AG','p':'AX',
'd':'DA','h':'DD','o':'DF','z':'DG','k':'DX','q':'FA','f':'FD','v':'FF','s':'FG','n':'FX',
'g':'GA','i':'GD','j':'GD','c':'GF','u':'GG','x':'GX',
'm':'XA','r':'XD','e':'XF','w':'XG','y':'XX'};
def S_ADFGX(S_str):result ='';S_str = S_str.lower();for i in range(len(S_str)):if S_str[i].islower():result += ''.join(ADFGX_dicts[S_str[i]]);else:result += ' ';return result  

12345编码

ADFGX_dicts2 = {'a':'11','b':'12','c':'13','d':'14','e':'15',
'g':'21','g':'22','h':'23','i':'24','j':'24','k':'25',
'l':'31','m':'32','n':'33','o':'34','p':'35',
'q':'41','r':'42','s':'43','t':'44','u':'45',
'v':'51','w':'52','x':'53','y':'54','z':'55'};
def S_ADFGX2(S_str):result ='';S_str = S_str.lower();for i in range(len(S_str)):if S_str[i].islower():result += ''.join(ADFGX_dicts2[S_str[i]]);else:result += ' ' ;return result   

凯撒编码

def S_Caesar(S_str):S_return = ''for i in xrange(0,26):S_return +=  S_rot13(S_str,i) + '\r\n'return S_return

维吉尼亚编码

def S_Vigenere(all_the_text):abc = "abcdefghijklmnopqrstuvwxyz"key = list(abc)random.shuffle(key)key = "".join(key)trans = string.maketrans(abc, key)return all_the_text.translate(trans)

下章介绍解密程序
【未完待续】

加解密杂烩程序开发(三)相关推荐

  1. WPF触控程序开发(三)——类似IPhone相册的反弹效果

    原文: WPF触控程序开发(三)--类似IPhone相册的反弹效果 用过IPhone的都知道,IPhone相册里,当图片放大到一定程度后,手指一放,会自动缩回,移动图片超出边框后手指一放,图片也会自动 ...

  2. 软件工程习题,耦合性的概念如何与软件可移植性相关联?举例支持你的论述,应用逐步求精法为下列程序开发三种不同级别的过程抽象

    软件工程习题 11.9.耦合性的概念如何与软件可移植性相关联?举例支持你的论述 11.10.应用逐步求精法为下列程序开发三种不同级别的过程抽象,开发一个支票打印程序,给出输出金额,并按支票常规要求给出 ...

  3. java swing开发窗体程序开发(三)事件(Mouse,Foucs,Key,Window)

    接着刚刚的事件讲 补充一点:事件的触发前提,添加了这个监听器的组件必须是处于激活状态的才可行 (一)MouseEvent事件 该事件的触发是由鼠标的动作引起的,引起的情况可以是下面5种,按下鼠标,释放 ...

  4. Android数据库加解密逆向分析(三)——微信数据库密码破解

    接着上一篇文章,在上一篇文章中我们通过对Line数据库加密的逆向分析,了解到了对要写入到数据库中的数据加密,读取时再将读取出的数据解密这种Android上的数据库加密方式.这篇文章来通过介绍对微信数据 ...

  5. 入门微信小程序开发(三)数据绑定的几种用法

    一.数据绑定 与书写HTML页面一样,小程序页面也只能通过多写多练提升.在构建完页面后就出现了一个问题,我们该如何获取组件元素让数据与之关联呢? 在网页开发中,我们同样使用JS操作DOM,包括数据渲染 ...

  6. Qt应用程序开发三:写日志文件

    开发过程中写日志文件是必不可少 Qt中自带qInstallMessageHandler来进行日志的收集 使用方法 第一步:设置qInstallMessageHandler的回调函数: #include ...

  7. 微信小程序开发(三):分包加载

    微信小程序分包加载 小程序开发完成后,开发者需要将代码包上传到小程序管理后台上线,这时候我们会发现,小程序后台对开发者上传的代码包有严格的大小要求:本地代码超过2M就会限制上传. 目前小程序分包大小有 ...

  8. 加解密程序之中间件思想的运用

    近期在工作中遇到一个加解密的集成需求,过程算得上是一波三折,在此记录以供思路分享,并便于日后翻阅. 1.需求背景: 客户引入数据时上传的excel是加密文件,由于系统无法直接解析加密文件导致引入失败. ...

  9. 微信小程序开发(一) 微信登录流程

    文/YXJ 地址:http://blog.csdn.net/sk719887916/article/details/53761107 最近在研究微信小程序开发,非常有意思的一个东西.花了一点时间写了一 ...

最新文章

  1. 返回倒数第 k 个节点
  2. 【转】如何单独编译Android源代码中的模块--不错
  3. 给Java初学者福利——Java语法基础
  4. Competition——AI:国内外人工智能比赛平台以及竞赛类型、竞赛题目、举行时间等之详细攻略(最全+ing)
  5. java 问题排查_JAVA问题排查笔记
  6. Java进阶:mysql的事务隔离级别面试题
  7. ASP.NET中GridView数据导出EXCEL小结
  8. Less的一些基本知识
  9. 华为手机明年全面升级鸿蒙OS:其实两年前就能用
  10. Madagascar和MPI混合编程的Makefile文件配置
  11. 一道c++小编程题,
  12. css3中的新特性经典应用
  13. 2021-08-04 模糊查询
  14. 2.6 使用for循环遍历文件 2.7 使用while循环遍历文件 2.8 统计系统剩余的内存 2.9 数据类型转换计算(计算mac地址) 3.0 数据类型转换(列表与字典相互转换)...
  15. 【NCD 2019 B】Let me sleep【边双连通分量缩点、树的直径】
  16. Lagrangian乘子法 对偶问题 KKT条件 Slater条件 与凸优化
  17. matlab-液压阀仿真
  18. wps计算机里wps云盘图标,我的电脑中的wps网盘图标怎么设置删除
  19. 大数定律和中心极限定理
  20. 游戏服务端框架之配置与玩家数据库设计

热门文章

  1. PyCharm - 码云(Gitee)
  2. 初识 Jetpack Compose
  3. 51单片机控制SG90舵机、MG90S舵机
  4. 下载的视频太大无法放进u盘
  5. flash+AS3制作的倒计时效果
  6. (笔记)数据结构--抽象数据类型的定义
  7. hbw-utils - 基本数据类型进制转换的实现
  8. CSDN如何快速搜索自己/别人的博客(区分大小写)
  9. jQuery——立可得项目心得
  10. 身体指数bmi流程图_BMI指数事关重大,你家娃合不合格赶紧来对表查!