Python 存储api_密钥、api_密码

Python 存储api_密钥、api_密码,python,Python,我想存储一个用户的API_密钥和API_密码,在我的数据库中隐藏。我确实需要随时查看它们(用于身份验证),并且如果用户想要查看,我需要能够向用户显示它们。这样做的好方法是什么 def create_key(self, user): key = str(uuid.uuid4()).replace('-','') key_saved_in_database = # ? user.key = key_saved_in_database user.save() def

我想存储一个用户的API_密钥和API_密码,在我的数据库中隐藏。我确实需要随时查看它们(用于身份验证),并且如果用户想要查看,我需要能够向用户显示它们。这样做的好方法是什么

def create_key(self, user):
    key = str(uuid.uuid4()).replace('-','')
    key_saved_in_database = # ?
    user.key = key_saved_in_database
    user.save()

def view_key(self, user):
    key_saved_in_database = user.key
    key = # ?
    return key

有哪些方法可以做到这一点?

使用xoring的基本实现可能如下所示:

def create_key(self, user):
    key = str(uuid.uuid4()).replace('-','')
    key_saved_in_database = # ?
    user.key = key_saved_in_database
    user.save()

def view_key(self, user):
    key_saved_in_database = user.key
    key = # ?
    return key
def infiniteSecret(secret):
    num = 0
    while true:
        yield secret[num % len(secret)]
        num += 1
#one direction
key_saved_in_database = map(lambda a, b: a ^ b, zip(infiniteSecret(secret), key))

#other direction
key = map(lambda a, b: a ^ b, zip(infiniteSecret(secret), key_saved_in_database))

用一个秘密密钥对密钥进行异或,再用相同的密钥进行异或,对您来说就足够了吗?(虽然不太安全。)是的,这在给定的情况下是可行的。使用对称密钥对它们进行加密(使用真正的加密算法,如AES,而不是XOR),然后将该对称密钥安全地存储在数据库外部,以便在数据库受损时(例如,通过SQL注入漏洞),密码没有泄露。