好的,我尝试用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)```
cur.execute()
返回一个行序列,每个行都是一个元组。在您的例子中,只有一个元素的元组,但仍然需要从中提取电子邮件。最优雅的方式是解包(注意email
后面的逗号):相关问题 更多 >
编程相关推荐