2017-11-25 186 views
0

我有這段代碼進行加密。加密工作不正常

from cryptography.fernet import Fernet 
key = Fernet.generate_key() 
f = Fernet(key) 
token = f.encrypt(b"something cool") 
k = f.decrypt(token) 
print(k) ` 

這是輸出

b'something cool' 

根據網站上的示例中, 「B」 應該已經走了。我對此非常感興趣,並希望知道或理解解決方案的工作原理。

謝謝

+0

這是一個字節對象,它看起來對我來說是正確的。 –

+0

@JamesKPolk對我來說似乎也是如此。這就像我在網站上看到的例子。但是「b」仍然存在於我的解密文本中 –

+0

@PatrickArtner那是我的打字錯誤 –

回答

1

'b'表示字節。所以,而不是使用字符串加密algorythms實際上是使用字節。我的經驗是,你給一個庫(str/bytes/array)它應該給你回來,Fernet正在做什麼。我只是將字節轉換回字符串k.decode(「utf-8」)

+0

我也試過這個。仍然相同 –

+0

對不起,這個答案是正確的轉換字節https://stackoverflow.com/a/606199 – raykrow

+0

謝謝你的解決方案 –

0

加密函數正在做他們應該做的事情:字節輸入和字節輸出。

加密和加密使用字節,而不是字符串或其他編碼,decrypt返回字節。實際的低級解密不知道編碼,它不能解密可能是一個字符串,它可能是一個圖像等。

這是由調用者提供編碼進出適合於數據被加密/解密。

由於調用者將加密函數封裝到提供正確編碼的函數中,在這種情況下,加密時將字符串轉換爲字節,解密時將字節轉換回字符串。