【问题标题】:Can anybody suggest an efficient solution for this problem?任何人都可以为这个问题提出一个有效的解决方案吗?
【发布时间】:2020-02-27 02:35:57
【问题描述】:

我们获得了数百万人的用户名和密码数据。我们可以将这些数据放入我们选择的数据结构中。 因此,每当有人为自己注册服务时,他/她的登录凭据(用户名和密码)都会保存在数组或开发人员选择的任何数据结构中。

现在,当某些用户尝试登录时,将检查他的用户名和密码以进行授权。我们该怎么做?

您应该使用哪种数据结构和哪种算法,以便系统能够有效地验证密码?

【问题讨论】:

  • 这不是家庭作业帮助网站。您有真正的问题吗?到目前为止您尝试过什么?
  • 简短的回答是哈希图。但在现实世界中,您可能应该将数据保存在数据库或其他类型的存储中,并且永远不应该将密码保存为纯文本,使用带盐的散列算法来防止彩虹表攻击。
  • 谢谢@maraca 实际上,我什么都想不出来。我会尝试更多地了解哈希映射。
  • 如果您在浏览器中搜索解决方案,您会找到比我们在此处管理的更能解释这一点的参考资料。这是一个常见的问题;网上有很多资源。

标签: algorithm performance data-structures


【解决方案1】:

在现实生活场景中,最好将用户名和密码存储到数据库中。

将密码存储在纯文本字段中是一个可怕的想法。但是,就位置而言,在大多数情况下,您会遇到将密码表示形式存储在数据库中是正确的做法。

通过表示,我的意思是您想使用盐(每个用户应该不同)和安全的单向算法对密码进行哈希处理,然后将其存储,丢弃原始密码。然后,当您要验证密码时,您对值进行哈希处理(使用相同的哈希算法和盐)并将其与数据库中的哈希值进行比较。

盐概念用于避免彩虹表攻击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2020-07-15
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多