使用cryptography.fernet的元组解密问题

2024-06-25 05:58:04 发布

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

好的,我尝试用python编写一个密码管理器,我使用cyrptography.fernet对电子邮件和密码进行加密,然后将它们存储到本地SQLite数据库中。问题是,当我尝试获取数据库中的电子邮件时,它们的格式是:(b'encypted-email-here'),(b'and-so-on)所以我想,因为引号前面有b,它是字节格式的,我不需要做任何事情来解密它们,但是当我真的尝试解密它们时,我得到一个错误:“TypeError:令牌必须是字节”这是我的代码,你可以看一下

    b_email = email.encode('utf-8')
    b_pwd = pwd.encode('utf-8')
    enc_email = f.encrypt(b_email)
    enc_pwd = f.encrypt(b_pwd)
    conn = sqlite3.connect('database.db')
    execute = conn.cursor()
    execute.execute('CREATE TABLE IF NOT EXISTS logins (website, email, password)')
    execute.execute('INSERT INTO logins VALUES (:website, :email, :password)', {'website': website, 'email': enc_email, 'password': enc_pwd})
    conn.commit()
    conn.close()


def view():
    con = sqlite3.connect('database.db')
    cur = con.cursor()
    iterable = cur.execute('SELECT email FROM logins')
    for email in iterable:
        dec_email = f.decrypt(email)
        print(dec_email)```


Tags: 数据库密码execute字节email格式pwdpassword