Python Fernet 类型错误 : token must be bytes

标签 python encryption fernet

在这里,我尝试将新行插入数据库的表中。

def insert_record():
    values = input('Enter values ').replace(' ', '').split(sep=',')
    values[-1] = f"{f.encrypt(values[-1].encode())}"
    c.execute("INSERT INTO credentials VALUES (?, ?, ?)", values)
    conn.commit()
    conn.close()

我加密了最后一个参数values[-1],因为它将是一个密码。 当我尝试解密它时

    for item in values:
    print(f.decrypt(item[-1]))

我得到:

Traceback (most recent call last):
TypeError: token must be bytes

我尝试了很多事情,但我已经被困了好几个小时了。我无法消除该错误。

最佳答案

请在字符串中添加b,将类型从字符串转换为字节。 看看下面的例子:

>>> from cryptography.fernet import Fernet
>>> key = Fernet.generate_key()
>>> f = Fernet(key)
>>> token = f.encrypt(b"my deep dark secret")
>>> token
b'...'
>>> f.decrypt(token)
b'my deep dark secret'

关于Python Fernet 类型错误 : token must be bytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63314081/

相关文章:

Python:MySQL:处理超时

java - 通过套接字接收 Diffie-Hellman key 错误

ssl - 握手失败(40)和 TLS_EMPTY_RENEGOTIATION_INFO_SCSV

r - 如何在 R 中解码 fernet 加密?

python - 将 Airflow 1.11 升级到 1.15 时出错

python - 如何在 Python 3 中找出 .pyc header 的魔数(Magic Number)

python - 如何使用选择器定位除第一个以外的所有目标

mysql - blowFIsh 数据存储在 mysql 数据库中

python-3.x - 如何在 Fernet (Python 3.9) 中使用 crypto_at_time 函数

python - 在函数中重新分配 arg 值的最佳方法