重新提出这个问题。我不是在问字符串文字中的“b”或如何去掉它
我有这样一个字符串:
"b'gAAAAABgAG4-D7Wda8gIQ6mLJNQegbfgKtnQ9nxcwJzokWGsiZMNYN2igbuUVcwMHxqZNQ-Yvd8tkTo-vWGEuOK7jgfKlGSq5A=='"
这最初是python cryptography.fernetencrypt()
函数返回的字节值
我需要将这个值传递给接受字节值的decrypt()
函数。如何将此字符串转换回字节类型
我已经阅读了stackoverflow上所有关于string到base64的类似解码文章,但它们并没有专门解决我的问题
我尝试过各种方法,如string.encode("ascii")
和bytes(string, 'utf-8')
,但我最终得到了如下结果:
b"b'gAAAAABgAG3XMnAaKN3H2y1bC-j08i8ONFwzG0SKeRyiM9dnfEo4ojegCxrY3DQB0Hf9kyM3fUId8ZZk_eQkX3GwAdboIMtk2A=='"
我还尝试了以下方法
import base64
byt = base64.decodebytes("b'gAAAAABgAG4-D7Wda8gIQ6mLJNQegbfgKtnQ9nxcwJzokWGsiZMNYN2igbuUVcwMHxqZNQ-Yvd8tkTo-vWGEuOK7jgfKlGSq5A=='")
但我最终出现了一个错误“TypeError:应该是像object这样的字节,而不是str”
我有这个问题,因为我想加密pandas中的一列数据,然后将其与其他未加密列一起写入Excel文件。当我稍后读回它时,加密列以字符串结束,当我解密这些值时,我得到错误“TypeError:token必须是字节”
不,这是fernet
encrypt()
返回的bytestring的repr()
表示。破译这一点将是加倍困难的(尽管ast.literal_eval()
可以做到)您需要更改该加密代码以将bytestring解码回常规文本字符串;由于Fernet令牌是ASCII安全的,因此您只需使用
.decode()
即可实现这一点然后,在尝试解密该值时,您将类似地
.encode('ascii')
Fernet要使用的文本字符串相关问题 更多 >
编程相关推荐