python實現的Caesar加解密算法

me87re 9年前發布 | 2K 次閱讀 Python 算法

Caesar算法是最簡單的加解密算法...

    # Caeser Cipher

import sys,os  

MyCypher = 25  

MyDict = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz `1234567890-=~!@#$%^&*()_+[]\\;\',./{}|:"<>?'  

plaintext = 'Hello World!'  
cryptmsg = ''  

def encrypt(text, cypher):  
    out_text = ''  
    for e in text:  
        x = e  
        if (e in MyDict):  
            idx = MyDict.find(e)  
            idx = idx + cypher  
            idx = idx % len(MyDict)  
            x = MyDict[idx]  
        out_text = "%s%c" % (out_text, x)  
    return out_text  

def decrypt(msg, cypher):  
    out_text = ''  
    for e in msg:  
        x = e  
        if (e in MyDict):  
            idx = MyDict.find(e)  
            idx = idx - cypher + len(MyDict)  
            idx = idx % len(MyDict)  
            x = MyDict[idx]  
        out_text = "%s%c" % (out_text, x)  
    return out_text  

def ask_cypher():  
    user_input = raw_input('Input Cypher: ')  
    return long(user_input)  

def ask_text():  
    user_input = raw_input('Input Text: ')  
    return user_input  

def ask_action():  
    print '-----------------------'  
    print '0 - Exit'  
    print '1 - Encrypt'  
    print '2 - Decrypt'  
    print '-----------------------'  
    user_input = raw_input('Select You Action: ')  
    if user_input in ['0', '1', '2']:  
        if user_input == '0':  
            return 'exit'  
        elif user_input == '1':  
            return 'enc'  
        elif user_input == '2':  
            return 'dec'  
    else:  
        return 'exit'  

# ---------------------------------------------------------------  
# Program Start Here  
# ---------------------------------------------------------------  
MyCypher = ask_cypher()  
print 'Cypher: %d' % MyCypher  

for i in range(0, 100):  
    action = ask_action()  

    if action == 'dec':  
        cryptmsg = ask_text()  
        print decrypt(cryptmsg, MyCypher)  
    elif action == 'enc':  
        plaintext = ask_text()  
        print encrypt(plaintext, MyCypher)  
    else:  
        print 'Exit!'  
        break  </pre> 


執行后,輸入密碼(數字), 然后選擇動作, 最后輸入密文或原文, 就能得到原文或密文了.

 本文由用戶 me87re 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!