使用 python 加密解密消息
encrypt-decrypt messages with python
我是密码学的新手,我想了解如何加密和解密消息。
例如我的消息是这样的:“1234, abcd, '123CE'” 我可以立即加密这条消息吗?
我试过这个:
encryption_key = Fernet.generate_key()
fernet = Fernet(encryption_key)
encrypt_message = fernet.encrypt(message.encode())
但我收到错误 TypeError: can only concatenate str (not "bytes") to str
感谢任何帮助,谢谢。(顺便说一句,我正在使用 python3)
以下代码适用于我:
Python 3.8.3 (default, May 19 2020, 06:50:17) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cryptography.fernet as cpf
>>> key = cpf.Fernet.generate_key()
>>> f = cpf.Fernet(key)
>>> m = f.encrypt("1234, abcd, '123CE'".encode())
>>> m
b'gAAAAABgbsGYBZjqDDilTYl5zmBfENlPkEbEdnK242_K1IBovuL-oiGrvvZmUZZMUoMQ2jYUdJ32GaI834U_Oe5Bdxhf6r-hIG5KwFawfmN45ewjSlgmzx4='
但是,生成字符串时可能会出现问题:
>>> s = "my string" + b"my bytestring"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "bytes") to str
>>> s = "my string" + b"my bytestring".decode()
>>> s
'my stringmy bytestring'
确保在尝试连接之前将所有字符串转换为 str
或 bytestring
格式。为此,使用 :
s.decode()
将 s
转换为 str
如果 s
是 bytestring
如果 s
是 str
类型,s.encode()
将 s
转换为 bytestring
。
我是密码学的新手,我想了解如何加密和解密消息。 例如我的消息是这样的:“1234, abcd, '123CE'” 我可以立即加密这条消息吗? 我试过这个:
encryption_key = Fernet.generate_key()
fernet = Fernet(encryption_key)
encrypt_message = fernet.encrypt(message.encode())
但我收到错误 TypeError: can only concatenate str (not "bytes") to str
感谢任何帮助,谢谢。(顺便说一句,我正在使用 python3)
以下代码适用于我:
Python 3.8.3 (default, May 19 2020, 06:50:17) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cryptography.fernet as cpf
>>> key = cpf.Fernet.generate_key()
>>> f = cpf.Fernet(key)
>>> m = f.encrypt("1234, abcd, '123CE'".encode())
>>> m
b'gAAAAABgbsGYBZjqDDilTYl5zmBfENlPkEbEdnK242_K1IBovuL-oiGrvvZmUZZMUoMQ2jYUdJ32GaI834U_Oe5Bdxhf6r-hIG5KwFawfmN45ewjSlgmzx4='
但是,生成字符串时可能会出现问题:
>>> s = "my string" + b"my bytestring"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "bytes") to str
>>> s = "my string" + b"my bytestring".decode()
>>> s
'my stringmy bytestring'
确保在尝试连接之前将所有字符串转换为 str
或 bytestring
格式。为此,使用 :
s.decode()
将s
转换为str
如果s
是bytestring
如果 s.encode()
将s
转换为bytestring
。
s
是 str
类型,