我正在考虑使用两个不同的salt字符串哈希用户密码,一个存储在代码中,对于所有用户都是相同的,另一个存储在数据库中,每个用户都有自己唯一的值.
这比仅仅将值存储在数据库中更有效吗?
任何建议,意见相关.
谢谢
atk*_*atk 20
如果有的话,效果微乎其微.考虑到静态的,硬编码的盐只能被视为对散列算法的改变 - 它每次都以完全相同的方式发生,所以它也可以被认为是算法的一部分.
但盐的目的是创建一些类似于扩展密码(最小)强度的随机性,目的是使离线破解(包括彩虹表)更加资源密集(非彩虹表破解需要更多) CPU时间和彩虹表将需要所有字符串的所有盐.
从中获得任何值的唯一方法是静态盐未知 - 相当于未知的算法.如果您的二进制文件或源代码可供攻击者使用,则逆向工程将演示算法和硬编码盐.
如果这个问题公之于众,你可能不得不面对许多安全爱好者的抨击,他们认为任何不完美的事情都会完全被打破,即使你的产品已经做对了,而且额外的步骤也没用.
当然,您必须处理具有静态盐的维护问题 - 向后兼容性以及散列代码周围的错误修复可能会很痛苦.
静态键(或盐)的非常小的好处根本不值得花费.始终使钥匙和盐动态.