2017-11-25 153 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返回字节。实际的低级解密不知道编码,它不能解密可能是一个字符串,它可能是一个图像等。

这是由调用者提供编码进出适合于数据被加密/解密。

由于调用者将加密函数封装到提供正确编码的函数中,在这种情况下,加密时将字符串转换为字节,解密时将字节转换回字符串。