由于散列密码最近已成为热门话题,因此很自然地期望事情会发生变化,并假设在未来一段时间您可能想要替换/调整系统中使用的算法。这自然会导致为新老用户存储不同类型的哈希。
我想知道如果我只是将数据库中使用的算法存储在每个哈希之前,是否可以接受?类似于 bcrypt 输出的外观:($2a$...算法版本)。如果我按名称存储它sha1$f6238eb6ca...怎么办?
显式公开使用的算法是否会使事情变得更糟?我在想,即使攻击者知道(极少数的)确切算法,破解它的工作顺序或多或少都是相同的,x1 或 x5 没什么大不了的,同样的 O(努力)。但它让我更容易管理。
各位专家怎么看?
更新。我正在考虑另一种选择,例如通过诸如 alg1、alg2 之类的代码来引用特定算法,并在应用程序的其他地方写下这些引用的解释,以便将这些信息放在手边。如果我最初的想法变得不好,这种方法会纠正它吗?