簡體   English   中英

Python fernet 無效令牌

[英]Python fernet invalid token

嘿,伙計們,我已經使用 bcrypt 和其他方法在 mysql 服務器中存儲加密密碼這幾天了。 似乎沒有任何工作,似乎沒有人能解決這個問題。 目前使用 fernet 作為 bcrypt 的替代品,但它仍然不起作用。 我創建了一個 class 來加密:

class PwdCipher:
    def generate_key(self,usr:str):
        if os.path.isfile("pass_keys/"+usr+".key"):
            return 1
        else:
            key = Fernet.generate_key()
            with open("pass_keys/"+usr+".key","wb") as key_file:
                key_file.write(key)
            return 0

    def load_key(self,usr:str):
        if os.path.isfile("pass_keys/"+usr+".key"):
            return open("pass_keys/"+usr+".key","rb").read()
        else:
            return 1

    def encrypt(self,usr:str,pwd:str):
        if self.generate_key(usr) == 0:
            key = self.load_key(usr)
            encoded_pwd = pwd.encode()
            f = Fernet(key)
            return f.encrypt(encoded_pwd)
        else:
            return 1

    def decrypt(self,usr:str,encrypted_pwd):
        if self.load_key(usr) == 1:
            return 1
        else:
            key = self.load_key(usr)
            f = Fernet(key)
            encoded_pwd = encrypted_pwd.encode()
            decrypted_msg = f.decrypt(encoded_pwd)
            print(decrypted_msg)

這被稱為:

    def root_task_handler(self,task):
        if task[0][2:] ==  "create_user":
            usr = task[1]
            pwd = task[2]
            email = task[3][:-1]
            encrypted_pwd = self.pwd_cipher.encrypt(usr,pwd)
            if encrypted_pwd == 1:
                print("[" + str(datetime.datetime.now()) + " - INFO] " + "USR KEY ALREADY EXISTS ...ABORTING " + usr)
            else:
                if self.query.create_user(usr,encrypted_pwd,email) == 0:
                    print("[" + str(datetime.datetime.now()) + " - INFO] " + "ROOT USER CREATED ACCOUNT " + usr)
        elif task[0][2:] ==  "delete_user":
            usr = task[1]
            pwd = task[2][:-1]
            encrypted_pwd = self.query.get_password(usr)
            db_pwd = self.pwd_cipher.decrypt(usr,encrypted_pwd)

在這一點上,我乞求一個答案。 如果您知道任何事情,請告訴我:我將不勝感激:)

我的問題沒有答案。 但一個解決方案是只加密 MySql 中的密碼。 唯一有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM