【问题标题】:encrypt-decrypt messages with python使用 python 加密-解密消息
【发布时间】:2021-07-04 02:23:22
【问题描述】:

我是密码学的新手,我想了解如何加密和解密消息。 例如我的消息是这样的:“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)

【问题讨论】:

  • encrypt_message = fernet.encrypt(message)? stackoverflow.com/questions/55033372/… 的可能重复项。
  • 不可重现。为什么用文字描述message的内容,而不是贴出可执行代码?
  • 正如我所说,我正在尝试学习如何进行这样的加密 :) 我首先想到的是代码片段

标签: python encryption fernet


【解决方案1】:

以下代码适用于我:

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'

确保在尝试连接之前将所有字符串转换为strbytestring 格式。为此,请使用:

  • 如果sbytestring,则s.decode()s 转换为str
  • 如果s 属于str 类型,则s.encode()s 转换为bytestring

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2016-06-08
    • 2012-01-17
    • 1970-01-01
    相关资源
    最近更新 更多