Python 用字典中的值替换字符串中的字母

Python 用字典中的值替换字符串中的字母,python,dictionary,encryption,Python,Dictionary,Encryption,我正在用python做一个加密项目。我创建了一个字典,字母表作为键,随机字母作为值。它现在被编码了,但我希望每个字母都被一个唯一的字母替换,它的一对。有什么建议吗 message = "it is time to code" my_dictionary ={'a': 'e', 'b': 'f', 'c': 'a', 'd': 'z', 'e': 'r', 'f': 'w', 'g': 'b', 'h': 'y', 'i': 'l', 'j': 'd', 'k': 'h',

我正在用python做一个加密项目。我创建了一个字典,字母表作为键,随机字母作为值。它现在被编码了,但我希望每个字母都被一个唯一的字母替换,它的一对。有什么建议吗

message = "it is time to code"

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

def create_cypher(message,my_dictionary):

  coded_message = message 

  for char in message:

      if char in my_dictionary:

          coded_message = coded_message.replace(char, my_dictionary[char]) 

  return coded_message  

output: 'lj ln jljr js aszr'
您还可以应用Ceaser算法

更正式地说,凯撒算法(即密码)通过将每个字母“旋转”k个位置来加密消息。更正式地说,如果p是一些明文,即未加密的消息,pi是p中的第i个字符,k是密钥,即非负整数,则密文c中的每个字母ci计算为

ci = (pi + k) % 26
其中,这里的%26表示“除以26时的余数”。这个公式可能会使密码看起来更复杂,但它实际上只是一种精确表示算法的简洁方式。实际上,为了便于讨论,将A或A视为0,B或B视为1,…,H或H视为7,I或I视为8,…,Z或Z视为25。假设凯撒只是想私下向某人打招呼,这次他用的是3的k键。所以他的明文,p,是Hi,在这种情况下,他的明文的第一个字符,p0,是H,也就是7,他的明文的第二个字符,p1,是i,也就是8。因此,他的密文的第一个字符c0是K,第二个字符c1是L

您还可以应用Ceaser算法

更正式地说,凯撒算法(即密码)通过将每个字母“旋转”k个位置来加密消息。更正式地说,如果p是一些明文,即未加密的消息,pi是p中的第i个字符,k是密钥,即非负整数,则密文c中的每个字母ci计算为

ci = (pi + k) % 26
其中,这里的%26表示“除以26时的余数”。这个公式可能会使密码看起来更复杂,但它实际上只是一种精确表示算法的简洁方式。实际上,为了便于讨论,将A或A视为0,B或B视为1,…,H或H视为7,I或I视为8,…,Z或Z视为25。假设凯撒只是想私下向某人打招呼,这次他用的是3的k键。所以他的明文,p,是Hi,在这种情况下,他的明文的第一个字符,p0,是H,也就是7,他的明文的第二个字符,p1,是i,也就是8。因此,他的密文的第一个字符c0是K,第二个字符c1是L


你可以使用一个随机化函数来创建一个键,该函数基本上用字母随机化字典,然后你可以用它的索引而不是它的字符来替换项目

你可以使用一个随机化函数来创建一个键,该函数基本上用字母随机化字典,然后你可以用索引而不是字符替换项目

您可以使用str.translate一次替换多个值:

为了做到这一点,您首先需要使用

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

trans_table = str.maketrans(mydictionary)
然后可以使用该表来翻译字符串

'hello'.translate(trans_table)
输出:“YRCS”

"it is time to code".translate(trans_table)
输出:“lj ln jltr js aszr”

'aaee'.translate(trans_table)
输出:“eerr”

代码“aaee”返回“rrrr”,因为您正在翻译已翻译的字符,所以可以使用str.translate一次替换多个值:

为了做到这一点,您首先需要使用

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

trans_table = str.maketrans(mydictionary)
然后可以使用该表来翻译字符串

'hello'.translate(trans_table)
输出:“YRCS”

"it is time to code".translate(trans_table)
输出:“lj ln jltr js aszr”

'aaee'.translate(trans_table)
输出:“eerr”


代码“aaee”返回“rrrr”,因为您正在翻译已翻译的字符

是否存在问题?看起来很好用。也许你是在寻找你有什么问题吗?看起来很好用。也许你是在追求谢谢你!是的,我最终还是换成了ceasar密码。谢谢!是的,我最终还是换成了ceasar密码。