2017-07-17 85 views
0

我做Python中的简单脚本,需要一个字符串,并通过移动1到10之间的随机数,每个字母进行加密:加密消息,而写这

from random import randint 

n = input('>>') 

for i in n: 
    print(chr(ord(i) + randint(1,10)), end = '') 

所以比如我写“七”它给了我“yh〜gx”。我想知道的是,当你正在写字符串时,可能会发生这种情况。例如,如果我想写“七”,它会显示“yh〜gx”。我知道这是可能的C++,但我不知道如何在Python中做到这一点。

+0

你为什么要这样做?而这不是加密,只是......我猜想。我甚至不知道该怎么称呼它。如果这是为了好玩,那很好。如果不是,**放弃**。 –

+0

@LukePark是的,它不是任何实际的目的只是有趣的。 – Nenad

+0

这与Vigenere密码有一些相似之处,虽然这是通过MOD 26而不是10来移动的。您正在使用'randint'来生成密钥流而不是固定的重复密钥。查看Vigenere密码的Python实现可能有助于一些想法。具体来说,你需要看看你将如何解密你的加密流。 – rossum

回答

1

Python是而不是非常适合这种工作。最好的解决方案我只能在Windows上找到,而且没有办法退出程序,但终止终端窗口(或者如果你愿意的话,你可以添加一个检查某个角色)。

import msvcrt 
from random import randint 

while True: 
    msvcrt.putch(chr((ord(msvcrt.getch()) + randint(1, 10)) % 128).encode('ascii')) 

该解决方案被发现here