簡體   English   中英

Python XOR加密程序有時不起作用

[英]Python XOR Encryption program sometimes doesn't work

我正在嘗試使用python創建一個簡單的xor加密程序,而現在我的工作幾乎可以正常工作,只是有時不能,我只是想不出原因。 例如,如果我輸入“ hello”和密鑰“ 1234”,它將把它加密為YW_X ^,然后如果我使用相同的密鑰對其進行解密,它將打印“ hello”。 但是,如果我將密鑰更改為“ qwer”,則加密的消息類似於“ ^ Y ^ R ^^^^”,並且如果嘗試對其進行解密,則會出現“ heERQWERoi”。 這是代碼:

from itertools import cycle, izip


choice = int(raw_input('Press 1 to encrypt, 2 to decrypt.  '))
if choice == 1:
    message = raw_input('Enter message to be encrypted:   ')
    privatekey = raw_input('Enter a private key:   ')
    encrypted_message = ''.join(chr(ord(c)^ord(k)) for c,k in izip(message, cycle(privatekey)))
    print 'Encrypted message:' 
    print encrypted_message
elif choice == 2:
    todecrypt = raw_input('Enter a message to be decrypted:   ')
    otherprivatekey = raw_input('Enter the private key:  ')
    decrypted_message = ''.join(chr(ord(c)^ord(k)) for c,k in izip(todecrypt, cycle(otherprivatekey)))
    print 'Decrypted message:'
    print decrypted_message

我不知道它有什么問題,因此,我非常感謝您的幫助,謝謝!

可能工作正常,但是您收到的字符可能無法直接重新輸入到終端中,因為它們與通常可輸入的ASCII字符不對應。 特別是,使用鍵qwerord的值變為[25, 18, 9, 30, 30] qwer [25, 18, 9, 30, 30] ,您可能很難輸入(請參閱此表 )。

如果使用1234作為鍵,則不會發生類似的問題,因為在這種情況下,值是[89, 87, 95, 88, 94] ,它們對應於“正常”字符。

您的腳本正在打印非打印字符,有時無法復制/粘貼。 您可以將密文編碼為僅使用字符abcdef0123456789的格式,這使您可以毫無問題地顯示密文:

print encrypted_message.encode('hex')

然后,當用戶再次輸入時,您可以對其進行解碼:

todecrypt = raw_input('Enter a message to be decrypted:   ').decode('hex')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM