首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python fernet无效令牌

Python fernet无效令牌
EN

Stack Overflow用户
提问于 2020-11-26 04:08:14
回答 1查看 53关注 0票数 0

嘿,伙计们,我已经研究这个问题好几天了,使用bcrypt和其他方法在mysql服务器上存储加密的密码。似乎什么都不起作用,而且似乎没有人有解决这个问题的办法。目前正在使用fernet作为bcrypt的替代品,但它仍然不起作用。我创建了一个要加密的类:

代码语言:javascript
复制
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)

它是由以下代码调用的:

代码语言:javascript
复制
    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)

在这一点上,我恳求一个答案。如果你知道什么,请让我知道!我将非常感谢这一点:)

EN

回答 1

Stack Overflow用户

发布于 2020-11-26 05:27:15

我对我的问题没有答案。但一种解决方案是只加密MySql中的密码。唯一有效的方法就是。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65012005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档