2017-07-17 82 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