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