我正在使用 python Fernet 库,因为我需要加密并将密码存储在数据库中,然后我需要查询加密的密码并将其解密以将其传递给变量,这是应用程序需要做一些事情的 FTP 密码. 由于我只需要将密码存储在数据库中,因此我运行加密代码将其存储在数据库中。然后我注释代码并使用我创建的函数decrypt_pwd 解密它,但返回erroro Invalid Token。任何想法?请编辑我的代码以防万一。
这是 store_user_db.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from cryptography.fernet import Fernet
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///data-users2.sqlite"
db = SQLAlchemy(app)
key = Fernet.generate_key()
f = Fernet(key)
class User(db.Model):
#CREATE THE TABLE; DEFINE COLUMNS; ENCRYPT PWD
__tablename__ = "user"
id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
username = db.Column(db.String(64), unique=True)
pwd = db.Column(db.LargeBinary(), unique=True)
def __init__(self, id, username, pwd):
token = f.encrypt(pwd)
self.id = id
self.username = username
self.pwd = f.encrypt(pwd)
#DECRYPT FUNCTION
def decrypt_pwd():
p = db.session.query(User).filter_by(username="ita_itf").first()
DESTINATION_PSW = f.decrypt(p.pwd)
return DESTINATION_PSW
在这里我将密码存储在数据库中,这一切都很好
#store FTP pwd I ONLY RUN THIS ONES THEN I COMMENT
#DICP_FTP_DESTINATION_PSW = self.submit_pwd()
#db.drop_all() # destroy all the tables.
#db.create_all() # create all fresh new tables.
#ftp = User(id = 1, username ="ita_itf", pwd = DICP_FTP_DESTINATION_PSW)
#db.session.add(ftp)
#db.session.commit()
这是问题所在,我在另一个 .py 文件中调用了 decrypt_pwd 函数
from store_user_db import decrypt_pwd
DICP_FTP_DESTINATION_PSW = decrypt_pwd()