如何在python中修改caeser密码程序以支持更多字符,例如空格,'$','&','%'等?

时间:2019-05-13 05:04:53

标签: python-3.x caesar-cipher

我可以用python编写程序,以用Caesar密码进行加密和解密。但我想修改程序,使其包含更多字符,例如空格,'$','&','%'等。

以下是原始代码

def encrypt(text,s): 
    result = "" 

    # traverse text 
    for i in range(len(text)): 
        char = text[i] 

        # Encrypt uppercase characters 
        if (char.isupper()): 
            result += chr((ord(char) - (s-65)) % 26 + 65) 

        # Encrypt lowercase characters 
        else: 
            result += chr((ord(char) - (s - 97)) % 26 + 97) 

    return result

1 个答案:

答案 0 :(得分:0)

这是一个变体:

from string import ascii_lowercase

alphabet = ascii_lowercase + '$&%'

def encrypt(plain, key):
    table = str.maketrans(alphabet, key)
    return plain.translate(table)

str.maketrans将创建一个表,然后可在str.translate中使用该表将alphabet中的所有字符映射到其改组后的对应字符。 然后可以将其用作:

from random import shuffle

key_list = list(alphabet)
shuffle(key_list)
key = ''.join(key_list)      # kd&ygphtcjxsfwrqo%$zianmvuebl
encrypt('hello world', key)  # tgssr nr%sy

您的字母似乎也包含大写字母;为此,只需更改:

from string import ascii_letters
alphabet = ascii_letters + '$&%'

请注意,key的长度必须与alphabet相同。