2016-03-08 107 views
1

我有我希望它有一個加密選項,我已經寫了加密一部分,所以加密文本的文本編輯器程序(這是它的一部分用於加密:pycrytodome如何轉換成字符串加密和解密文本

key= hashlib.sha256(str.encode(textbox1,"utf-8")).digest() 
e = AES.new(key,AES.MODE_EAX) 
e1 = AES.new(key,AES.MODE_EAX) 
ciphertext = e.encrypt(bytes(text.get(0.1,END),"utf-8")) 
s=e1.decrypt(ciphertext) 
text.delete(0.0,END) 
text.insert(0.0,ciphertext) 
print(s.decode()) 
#how do i convert e1.decrypt(ciphertext) to string that i can put into text later? 

如何將e1.decrypt(ciphertext)轉換爲稍後可以放入文本的字符串,或者如何將加密的字節轉換爲字符串,以便保存在文本文件中或者在文本小部件中看到它?

編輯:我發現問題在eax模式下它隨機解密: e1 = AES.new(key,AES.MODE_EAX,e.nonce) 但我怎麼能存儲這個nonce以某種方式非字節,它會顯示它tkinter文本小部件?

+0

修復問題中的代碼,不使用's1',s = e1.decrypt(ciphertext)'出現兩次。 's'和'text'是什麼? – zaph

+0

文本是文本部件(tkinter),並感謝你的表揚 – Hormoz

+0

'text.get(0.1,END)','s'和's.decode()'的值是什麼? – zaph

回答

0

由於加密產生非字符字節,因此通常不可能將加密字節轉換爲字符串。通常,如果需要可打印的字符串表示形式,則使用Base64或hexadedcimal。

+0

謝謝你的回答:) – Hormoz