随机替换密码(Python)

时间:2017-03-01 16:22:22

标签: python encryption random substitution

我正在编写一个随机替换密码,它在用于编写常规句子时效果很好。但是,当我尝试测试“abbcccddddeeeee”时,我会得到一些回报,例如“我是谁,我是J J J K K K K K'”。如何更改我的代码,以便键入' key'或者' vari'周期中每个字母的更改是否保持不变,以便没有任何字母对应多个其他字母?

import random
intext = raw_input("Enter a message to encrypt: ")
intext = intext.upper()
key = random.randint(0,27)
vari = random.randint(0,27)
def randomsub(intext):
    outtext = []
    intext = intext.upper()
    for c in intext:
        num = ord(c)
        if num >= ord('A') and num <= ord('Z'):
            num = num - ord('A')
            num = num + (key + vari) % 26
            num += ord('A')
            outtext.append(chr(num))
    return ' '.join(outtext)
print randomsub(intext)

1 个答案:

答案 0 :(得分:0)

不确定为什么你同时拥有keyvari,但随机性应该在你的函数中,并且至少有一个对randint的调用应该在循环中。我建议将key作为用户提供的输入,并使用它来播种random。这样,使用相同的文本和相同的键,您将获得相同的输出,但文本中的重复字母将在结果中有所不同。最后,但并非最不重要的是,如果您希望输出为字母,则需要展开括号中添加keyvari以包含num的括号,即num = (num + vari) % 26 if你按照我的建议切换到使用key