我正在为论坛编写登录名,并且需要先在javascript中对密码客户端进行哈希处理,然后再将其发送到服务器。我在弄清楚我可以信任的SHA-256实现方面遇到麻烦。我期望每个人都可以使用某种权威的脚本,但是我发现很多负载不同的项目都有自己的实现。
我意识到使用他人的加密货币始终是一种信念的飞跃,除非您有资格自己审查它,并且没有“信任”的通用定义,但这似乎很常见且重要,应该有某种意义关于使用什么的共识。我只是天真吗?
编辑,因为注释中包含了很多内容:是的,我们在服务器端再次进行了更严格的哈希处理。客户端哈希不是我们保存在数据库中的最终结果。客户端哈希是因为人类客户端请求它。他们没有给出具体的原因,也许他们只是喜欢过度杀伤。
在斯坦福JS加密库包含SHA-256的实现。尽管JS中的加密并没有像其他实现平台那样经过严格的审查,但该平台至少部分是由DanBoneh开发的,并在一定程度上是由DanBoneh开发的,DanBoneh是加密技术中公认的可靠名称。,这表示该项目受到实际上知道自己在做什么的人的监督。该项目也得到了NSF的支持。
但是,值得指出的是…… 如果在提交之前对客户端的密码进行哈希处理,则哈希值就是password,原始密码就变得无关紧要了。攻击者仅需拦截哈希即可模拟用户,并且如果该哈希未经修改地存储在服务器上, 则服务器 将以纯文本格式存储 真实 密码(哈希)。