使用自己的字母进行Python加密

时间:2019-02-27 17:46:35

标签: python encryption

我是python的新手。我想从控制台获取输入并对其进行加密。我想像这样更改输入字符串的字母然后输出。

a=e,
b=g,
c=p,
d=f,
e=i,
f=k,
g=q,
h=u,
i=h,
j=v,
k=z,
l=w,
m=j,
n=r,
o=d,
p=s,
q=t,
r=n,
s=c,
t=l,
u=y,
v=x,
w=b,
x=m,
y=o,
z=a

因此,如果我输入“ Dog”,则应输出“ Dog = Fdq”,如果输入“ python”,则应输出“ python = soludr”。我该怎么办?

2 个答案:

答案 0 :(得分:3)

这是使用字典的好地方。

您可以先声明字典:

translateDict = {'a' : 'e', 
                 'b' : 'g',
                  #etc
                 'z' : 'a'}

在许多方面,字符串实际上只是字符列表。因此,您可以定义一个对每个字符进行操作的函数:

def encryptWord(word):
    return ''.join([translateDict[x] for x in word])

这是在使用列表推导。有效地,该函数创建了一个字符列表:具体地说,对于输入单词中的每个字符,它会在字典中查找其对应的值,并(依次)从这些结果中创建一个列表。 join函数通过连接一个字符串或字符串列表,并在每个字符串之间添加''字符串(在这种情况下,在每个字符之间不添加任何内容)来创建字符串。

如果您在字典中放入不包含字母的字符串,则可能会导致问题,但是您应该可以从中使用。

答案 1 :(得分:1)

我同意最简单的方法是使用字典,请参见下面的另一个示例:

    def encrypt(word):
    keys = {
        'a':'e',
        'b':'g',
        'c':'p',
        'd':'f',
        'e':'i',
        'f':'k',
        'g':'q',
        'h':'u',
        'i':'h',
        'j':'v',
        'k':'z',
        'l':'w',
        'm':'j',
        'n':'r',
        'o':'d',
        'p':'s',
        'q':'t',
        'r':'n',
        's':'c',
        't':'l',
        'u':'y',
        'v':'x',
        'w':'b',
        'x':'m',
        'y':'o',
        'z':'a'
    }

    encrypted_list = []
    for letter in word:
        encrypted_list.append(keys[letter])

    return ''.join(encrypted_list)

if __name__ == "__main__":
        text = input("Type the word you wanna encrypt: ")

        print(encrypt(str(text).lower()))

该示例未刻意使用列表推导,因为我们已经有了另一个示例。