我一直想知道将假字符放入散列密码是否有意义?
例如这是我的密码:1234
在对密码进行哈希处理后,结果如下: abcd
然后在哈希密码中添加字符:aKbjczdx(每个第二个字符都是假的)
这有什么意义吗?
我一直想知道将假字符放入散列密码是否有意义?
例如这是我的密码:1234
在对密码进行哈希处理后,结果如下: abcd
然后在哈希密码中添加字符:aKbjczdx(每个第二个字符都是假的)
这有什么意义吗?
在考虑应用程序中的散列密码和其他保密措施时,有一个基本规则:
攻击者知道应用程序知道的一切。
所以在这种情况下,你什么也得不到,因为攻击者可以简单地删除你的混淆,然后直接破解你的密码。这同样适用于:
不要在这里浪费时间。获取标准的最佳实践密码散列算法(bcrypt、scrypt、PHPass、PBKDF2)并花时间保护您的应用程序。
不,这没有意义。
当攻击者知道每个第二个字符都是假的时,它根本不会减慢它们的速度。
任何依赖于攻击者不知道您的系统如何工作的安全措施都是通过 obscurity实现的安全性,这是一种反模式。一个系统只有在它对知道它是如何工作的人是安全的时才是安全的。
很多答案似乎都错过了你的观点,因为我假设当你说
这是我的哈希:abcd
您已经在使用安全且可接受的散列算法,而不仅仅是进行纯粹的混淆。在这种情况下,我会争辩说,对哈希进行一些混淆会增加安全性,因为通常只有数据库在没有代码的情况下被转储,并且在这些情况下 - 并且仅在那些情况下 - 应用于哈希的额外规则将使其更难弄清楚发生了什么以及使用了哪种散列算法。
当然,最好首先确保数据库不会被盗,并且一旦攻击者可以访问数据库,他很可能也会访问您的代码,但是使哈希无法识别至少会使相当多的脚本小子黑客放弃了。
总而言之,我会建议你这样做吗?不,不是。使用一个好的散列算法和加盐你的密码应该绰绰有余,但回答你的问题:是的,它确实有意义,不管多么少。