存储用户名和密码的最佳方式

问题描述

我正在学习安全课程,我们刚刚了解到您永远不应该实际存储用户的密码。相反,您应该将其散列并将其与用户名一起存储。

这让我想到,如果我正在构建一个网络应用程序并想要存储用户名和密码 - 我将在哪里/如何存储它们?

我认为哈希映射在这种情况下会很有用,因为您有一个键(用户名)和一个值(哈希密码),但我想知道这是否是一个好的数据结构,或者是否有更好的数据结构方法

解决方法

如果你想使用一个键来查找一个值——这里是一个使用用户名的密码,那么你确实需要一个关联容器,也就是地图。该映射的实现是使用哈希表(即它是哈希映射,如 C++ 的 std::unordered_map 说)还是平衡二叉树(如 std::map - 它们都是对于大多数用途来说可能足够快。如果你有数十亿用户,那么哈希表会在性能方面取得进步,但如果是这样,你可以聘请一些有经验的程序员,他们会在一段时间内有更大的担忧我确定。