我目前正在开发一个需要高安全性的Web应用程序,我一直在思考密码处理。使用哈希密码和足够大的盐是必须的,但是使用不同的盐或不同的算法多次哈希密码是否有益呢?
我不是指你应该多次哈希密码来生成密码哈希值,例如
关于应用程序的其他信息: 该应用程序主要是我们公司的内部应用程序。所有连接都使用https处理,所有用户名对于此应用程序都是唯一的(因此您无法选择用户名),所有密码对于此应用程序也是唯一的(随机生成的,您不能选择它们)。我们主要担心在我们做出反应之前有人未经授权就能访问系统。如果我们有时间做出反应,那么找到确切的密码并不是什么大问题。
我不是指你应该多次哈希密码来生成密码哈希值,例如
Hash(Hash(Hash(salt + psw)))=pswhash
,而是考虑使用Hash(Hash(Hash(salt1 + psw)))=pswhash1
和Hash(Hash(Hash(salt2 + psw)))=pswhash2
,然后在登录时将两者进行比较。使用此例程,攻击者不仅必须找到一个生成pswhash的密码,还必须找到一个能正确生成两个哈希值的密码。这样,冲突的可能性几乎为零,但攻击者可以使用第二个哈希值确定第一个哈希值的密码是否正确。关于应用程序的其他信息: 该应用程序主要是我们公司的内部应用程序。所有连接都使用https处理,所有用户名对于此应用程序都是唯一的(因此您无法选择用户名),所有密码对于此应用程序也是唯一的(随机生成的,您不能选择它们)。我们主要担心在我们做出反应之前有人未经授权就能访问系统。如果我们有时间做出反应,那么找到确切的密码并不是什么大问题。