解密/加密Python

时间:2015-02-27 18:18:23

标签: python

加密使得('w','f')返回'b'。如何编写代码的反转来解密它,以便('b','f')返回'w'?

def char_encrypt(plaintextchar, keychar):
    result= chr(ord('a') + ((ord(plaintextchar) - ord('a')) +  (ord(keychar) - ord('a'))) % 26)
    ciphertextchar = result
    return ciphertextchar

1 个答案:

答案 0 :(得分:1)

这是标准的rot13东西......它可能最适合制作给定角色的翻译表

from string import maketrans,ascii_lowercase as lc,ascii_uppercase as uc

def create_transtab(key,decode=False):
    offset = ord(key)-ord('a')
    data_plaintext = lc+ uc
    data_shift = lc[offset:]+lc[:offset] + uc[offset:] + uc[:offset]
    if not decode:
       return maketrans(data_plaintext,data_shift)
    return maketrans(data_shift,data_plaintext)

def encode_text(my_text,key):
    tab = create_transtab(key)
    return my_text.translate(tab)

def decode_text(my_text,key):
    tab = create_transtab(key,decode=1)
    return my_text.translate(tab)

print encode_text("w","f")
print decode_text("b","f")