当前位置: 首页 > 面试题库 >

Python最安全的方法来从数据库存储和检索密码

彭鸿彩
2023-03-14
问题内容

希望将用户名和密码存储在数据库中,并且想知道这样做最安全的方法是什么。我知道我必须在某处使用盐,但是不确定如何安全地生成盐或如何将其应用于加密密码。一些示例Python代码将不胜感激。谢谢。


问题答案:

将密码+盐存储为哈希和盐。看一下Django的工作方式:基本文档和源代码。它们在数据库中存储
<type of hash>$<salt>$<hash>在单个char字段中。您也可以将这三个部分存储在单独的字段中。

设置密码的功能:

def set_password(self, raw_password):
    import random
    algo = 'sha1'
    salt = get_hexdigest(algo, str(random.random()), str(random.random()))[:5]
    hsh = get_hexdigest(algo, salt, raw_password)
    self.password = '%s$%s$%s' % (algo, salt, hsh)

get_hexdigest只是一些哈希算法的瘦包装。您可以为此使用hashlib。就像是hashlib.sha1('%s%s' % (salt, hash)).hexdigest()

并检查密码的功能:

def check_password(raw_password, enc_password):
    """
    Returns a boolean of whether the raw_password was correct. Handles
    encryption formats behind the scenes.
    """
    algo, salt, hsh = enc_password.split('$')
    return hsh == get_hexdigest(algo, salt, raw_password)


 类似资料:
  • 问题内容: 我让人们在氏族中提交用户名和密码,然后我需要知道使用此代码将其提交到数据库中是否安全,或者在数据库中是否安全。 我使用参数来避免SQL注入攻击。 -------------------------------------------------- -------------------------------- 这不是重复的,因为以不同的方式询问和存储密码。它使用MD5哈希密码。 问题

  • 本文向大家介绍如何使用Python将数据存储和检索到Sqlite3数据库中?,包括了如何使用Python将数据存储和检索到Sqlite3数据库中?的使用技巧和注意事项,需要的朋友参考一下 您可以使用sqlite3模块轻松地将日期存储和检索到Sqlite3数据库中。在数据库中插入日期时,直接传递日期,Python会自动处理它。 示例 输出结果 这将给出输出- 现在,当您从数据库中获取值时,您将获得已

  • 问题内容: 您好,我在较早之前发布了此内容,并获得了一些帮助,但仍然没有有效的解决方案。由于最后的问与答,我确定我的“保存到数据库”代码以及“检索到图片”代码有问题。即使我手动将图片保存在数据库中,它也不会恢复。这是我从网络上的3或4个示例中修补而成的代码。理想情况下,如果有人拥有一些已知的良好代码,并且可以指导我这样做,那将是最好的。 ![在此处输入图片描述] [1] ‘*使用以下代码检索到图片

  • 问题内容: 在MySQL数据库中存储IP地址的最佳字段类型和长度是什么? IPv6呢? 问题答案: 将IP存储为,然后使用和功能存储/检索IP地址。 样例代码:

  • 问题内容: 如何在MySQL中插入图像,然后使用PHP检索图像? 我在这两个领域的经验都很有限,我可以使用一些代码让我着手解决这个问题。 问题答案: 首先,您创建一个MySQL表来存储图像,例如: 然后,您可以将图像写入数据库,如下所示: 您可以使用以下方法在网页中显示数据库中的图像:

  • 问题内容: 我对选择两种方法感到困惑。 方案 有两个表,并分别。包含用户数据,例如名字,姓氏等 包含每个用户拥有的汽车及其说明。即,等等 现在,如果我想获得所有用户的所有信息,那么哪种方法最好在最短的时间内完成? 方法1。 查询其中的所有行,并将它们全部存储在ex的列表中。 然后循环浏览列表并对其进行查询,并根据第一步中保存的用户从中获取数据。 方法2 查询所有行,并在保存该行时从中获取所有值并保