加解密杂烩程序开发(三)
前两篇文章介绍了如何使用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)
下章介绍解密程序
【未完待续】
加解密杂烩程序开发(三)相关推荐
- WPF触控程序开发(三)——类似IPhone相册的反弹效果
原文: WPF触控程序开发(三)--类似IPhone相册的反弹效果 用过IPhone的都知道,IPhone相册里,当图片放大到一定程度后,手指一放,会自动缩回,移动图片超出边框后手指一放,图片也会自动 ...
- 软件工程习题,耦合性的概念如何与软件可移植性相关联?举例支持你的论述,应用逐步求精法为下列程序开发三种不同级别的过程抽象
软件工程习题 11.9.耦合性的概念如何与软件可移植性相关联?举例支持你的论述 11.10.应用逐步求精法为下列程序开发三种不同级别的过程抽象,开发一个支票打印程序,给出输出金额,并按支票常规要求给出 ...
- java swing开发窗体程序开发(三)事件(Mouse,Foucs,Key,Window)
接着刚刚的事件讲 补充一点:事件的触发前提,添加了这个监听器的组件必须是处于激活状态的才可行 (一)MouseEvent事件 该事件的触发是由鼠标的动作引起的,引起的情况可以是下面5种,按下鼠标,释放 ...
- Android数据库加解密逆向分析(三)——微信数据库密码破解
接着上一篇文章,在上一篇文章中我们通过对Line数据库加密的逆向分析,了解到了对要写入到数据库中的数据加密,读取时再将读取出的数据解密这种Android上的数据库加密方式.这篇文章来通过介绍对微信数据 ...
- 入门微信小程序开发(三)数据绑定的几种用法
一.数据绑定 与书写HTML页面一样,小程序页面也只能通过多写多练提升.在构建完页面后就出现了一个问题,我们该如何获取组件元素让数据与之关联呢? 在网页开发中,我们同样使用JS操作DOM,包括数据渲染 ...
- Qt应用程序开发三:写日志文件
开发过程中写日志文件是必不可少 Qt中自带qInstallMessageHandler来进行日志的收集 使用方法 第一步:设置qInstallMessageHandler的回调函数: #include ...
- 微信小程序开发(三):分包加载
微信小程序分包加载 小程序开发完成后,开发者需要将代码包上传到小程序管理后台上线,这时候我们会发现,小程序后台对开发者上传的代码包有严格的大小要求:本地代码超过2M就会限制上传. 目前小程序分包大小有 ...
- 加解密程序之中间件思想的运用
近期在工作中遇到一个加解密的集成需求,过程算得上是一波三折,在此记录以供思路分享,并便于日后翻阅. 1.需求背景: 客户引入数据时上传的excel是加密文件,由于系统无法直接解析加密文件导致引入失败. ...
- 微信小程序开发(一) 微信登录流程
文/YXJ 地址:http://blog.csdn.net/sk719887916/article/details/53761107 最近在研究微信小程序开发,非常有意思的一个东西.花了一点时间写了一 ...
最新文章
- 返回倒数第 k 个节点
- 【转】如何单独编译Android源代码中的模块--不错
- 给Java初学者福利——Java语法基础
- Competition——AI:国内外人工智能比赛平台以及竞赛类型、竞赛题目、举行时间等之详细攻略(最全+ing)
- java 问题排查_JAVA问题排查笔记
- Java进阶:mysql的事务隔离级别面试题
- ASP.NET中GridView数据导出EXCEL小结
- Less的一些基本知识
- 华为手机明年全面升级鸿蒙OS:其实两年前就能用
- Madagascar和MPI混合编程的Makefile文件配置
- 一道c++小编程题,
- css3中的新特性经典应用
- 2021-08-04 模糊查询
- 2.6 使用for循环遍历文件 2.7 使用while循环遍历文件 2.8 统计系统剩余的内存 2.9 数据类型转换计算(计算mac地址) 3.0 数据类型转换(列表与字典相互转换)...
- 【NCD 2019 B】Let me sleep【边双连通分量缩点、树的直径】
- Lagrangian乘子法 对偶问题 KKT条件 Slater条件 与凸优化
- matlab-液压阀仿真
- wps计算机里wps云盘图标,我的电脑中的wps网盘图标怎么设置删除
- 大数定律和中心极限定理
- 游戏服务端框架之配置与玩家数据库设计