Simplecrypt:要解密的数据必须是字节

2024-10-02 16:25:04 发布

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

所以,我把加密的数据写入了txt文件。
我用readline()读了这一行。
但我得到的是字符串类型的值。

在文本文件中,如下所示:

`b'sc\x00\x01\x9eU\x86\x8aV\x8f\xa3\x9f\xf4iD\x9bv\xea\x05\x11\xdeo\xd7 \xef\xb1iK\xc1;\xa5\x02\x9fz@\xe4|\x9b^\xe5\xf9e\xc4\xf30\xaa\xe8\xcc>\xf8a\xfa;"\xfb)\xc7z|\xc9\x9c\x1c\x19\xc1}\x15\xdd_\xfd\x90z\x865\xe9O\xef\xd9\t\x06\x9c'`

(b'~~~~~~')

但是,当我在python中读取文本文件并将其放入变量中时,它看起来是这样的:

^{pr2}$



由于这种差异,我得到一个错误消息:

you cannot use a string because no string encoding will accept all possible characters.


它将其识别为字符串。
如何读取文件并将其放入字节类型的变量中?在


Tags: 文件数据字符串txt类型readlinestringsc
2条回答

我一直在做的是在保存文件时使用.decode(),在加载文件时使用.encode(),所以文本以字符串的形式存在于文件中,您打开它,然后以字节的形式读取它。在

Edit:

When encrypting:
with open("encrypted.txt", "w+") as file: file.write(encryptedData.decode())

When decrypting:
with open("encrypted.txt", "r") as file: encryptedFile = file.readlines() encryptedFile = [line.encode() for line in encryptedFile]

问题可能不在数据类型中。您的数据是二进制数据,它可能包含一个换行符(\n)。在这种情况下,readline只读取换行符,即只读取字符串的一部分。在

错误消息指向此问题。不幸的是,readline对于二进制数据是不可靠的。您需要将二进制数据编码成一个字符串(例如使用base64),以便将其保存在文本文件中。在

有关工作示例,请参见:SimpleCrypt Python Error

有关将二进制数据编码为字符串的示例,请参见:How does one encode and decode a string with Python for use in a URL?

相关问题 更多 >