假设您可以自由决定将散列密码存储在DBMS中的方式。这样的计划是否存在明显的弱点?
要创建存储在DBMS中的哈希值,请执行以下操作:
作为盐一部分的DBMS服务器实例唯一的值,
用户名是盐的第二部分,
并使用实际的密码创建盐的串联,
然后使用SHA-256算法对整个字符串进行哈希处理,
并将结果存储在DBMS中。
这意味着任何想解决冲突的人都必须分别为每个用户名和每个DBMS服务器实例分别进行工作。我打算使实际的哈希机制保持一定的灵活性,以允许使用仍在开发中的新的NIST标准哈希算法(SHA-3)。
“ DBMS服务器实例唯一的值”不必是秘密的-尽管不会随意泄露。目的是确保如果有人在不同的DBMS服务器实例中使用相同的密码,则记录的哈希值将不同。同样,用户名也不会是秘密的-仅是正确的密码。
首先使用密码,然后使用用户名和“唯一值”,或者对这三个数据源进行任何其他排列,会有任何好处吗?或交织字符串呢?
我是否需要添加(并记录)随机盐值(每个密码)以及上述信息?(优点:用户可以重复使用密码,并且很可能仍然在数据库中记录了一个不同的哈希值。缺点:必须记录盐。我怀疑优点远大于缺点。)
密码哈希:固定长度的二进制字段还是单个字符串字段?
我认为这些问题的答案支持我的算法(尽管如果您只是使用随机盐,那么“每台服务器的唯一值”和用户名组件就不太重要了)。
慕哥9229398
哔哔one
LEATH