我认为使用md5或sha256或任何针对速度优化的哈希值是完全可以的,我很好奇听到其他用户可能有的任何反驳。以下是我的理由
如果您允许用户使用弱密码,例如上帝,爱情,战争,和平,那么无论加密如何,您仍然允许用户输入密码而不是哈希值,并且这些密码通常首先使用,因此这与加密没有任何关系。
如果您不使用SSL或没有证书,那么侦听流量的攻击者将能够提取密码,并且任何使用javascript或类似内容进行加密的尝试都是客户端,并且很容易破解和克服。同样,这与服务器端的数据加密没有任何关系。
暴力攻击将利用弱密码,并且由于您允许用户输入数据,如果您没有3甚至更多的登录限制,那么问题将再次与数据加密无关。
如果您的数据库受到损害,那么很可能所有内容都已受到损害,包括您的哈希技术,无论您做得多么隐晦。同样,这可能是不满的员工XSS攻击或sql注入或其他与您的密码加密无关的攻击。
我确实相信你仍然应该加密,但我唯一能看到加密做的是防止已经或以某种方式获得数据库访问权限的人大声朗读密码。如果是未经授权在数据库上的人,那么你有更大的问题要担心,这就是为什么索尼被拿走了,因为他们认为加密密码保护了包括信用卡号在内的所有内容,它所做的就是保护一个字段。
对于数据库中的密码的复杂加密,我能看到的唯一纯粹好处是延迟员工或有权访问数据库的其他人只读出密码。因此,如果这是一个小项目或我不会太担心服务器端的安全性,相反,我会更担心保护客户端可能发送到服务器的任何内容,例如sql注入,XSS攻击或您可能受到损害的许多其他方式。如果有人不同意,我期待从客户端阅读一种必须使用超级加密密码的方法。
我想尝试明确这一点的原因是,人们经常认为加密密码意味着他们不必担心它被泄露,他们不再担心保护网站。