我正在开发一个小型网络应用程序,可以在内部对用户进行身份验证。一旦用户通过身份验证,我的 Web 应用程序就会将一些信息(例如用户 ID 和人员姓名)传递给第三方 Web 应用程序。第三方开发人员建议我们对这些值进行哈希和加盐。
原谅我的无知,但这到底意味着什么?
我正在用 Java 编写应用程序。因此,我计划做的是使用 Apache Commons Digest Utils SHA512 将用户 ID、人名和一些 Math.random() 值作为盐进行哈希处理,并将该哈希字符串与用户 ID 和人名一起传递。
这是标准做法吗?
我也应该将盐传递给第三方,对吗?
盐通常用于安全地存储密码的哈希值。对用于存储或通信的密码进行哈希处理(以便其他人无法读取)很容易被使用解码彩虹桌 http://en.wikipedia.org/wiki/Rainbow_table。现在,当您向密码添加随机字符串,但使用哈希值存储该字符串时,这会变得更加困难。计算这个新的哈希值如下:
hash(password + salt)
or even
hash(hash(password) + salt)
要安全登录第三方网站,可以发送用户 ID、加盐哈希(来自上面)和您使用的盐(如果未给出)。根据该网站存储密码的方式,您可以自己生成盐,也可以从中请求盐。
一种选择是先将 UserID 发送到网站,然后让它用盐进行响应,然后发送hash(password+salt))
返回网站。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)