Python字节字符串(?)到字节

2024-09-26 22:52:44 发布

您现在位置:Python中文网/ 问答频道 /正文

重新提出这个问题。我不是在问字符串文字中的“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必须是字节”


Tags: 方法函数字符串string字节错误cryptography文字
1条回答
网友
1楼 · 发布于 2024-09-26 22:52:44

"b'gAAAAABgAG4-D7Wda8gIQ6mLJNQegbfgKtnQ9nxcwJzokWGsiZMNYN2igbuUVcwMHxqZNQ-Yvd8tkTo-vWGEuOK7jgfKlGSq5A=='"

This is originally a byte value returned by the python cryptography.fernet encrypt() function.

不,这是fernet encrypt()返回的bytestring的repr()表示。破译这一点将是加倍困难的(尽管ast.literal_eval()可以做到)

您需要更改该加密代码以将bytestring解码回常规文本字符串;由于Fernet令牌是ASCII安全的,因此您只需使用.decode()即可实现这一点

然后,在尝试解密该值时,您将类似地.encode('ascii')Fernet要使用的文本字符串

相关问题 更多 >

    热门问题