加解密杂烩程序开发(三)

前两篇文章介绍了如何使用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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值