0

我正在使用 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()
4

0 回答 0