当前位置: 首页 > 知识库问答 >
问题:

有什么SHA-256 javascript实现通常被认为是可信的吗?

钮博裕
2023-03-14

我意识到使用别人的密码总是一种信念的飞跃,除非你有资格自己审查它,而且“可信”没有普遍的定义,但这似乎是一件足够普遍和重要的事情,应该在使用什么上有某种共识。我只是天真吗?

编辑,因为它在评论中出现了很多:是的,我们再次在服务器端做了一个更严格的哈希。客户端散列不是我们保存在数据库中的最终结果。客户端散列是因为人类客户端请求它。他们没有给出具体的原因,可能他们只是喜欢过度杀戮。

共有1个答案

景国兴
2023-03-14

过时:许多现代浏览器现在对加密操作有一流的支持。见下面维塔利·兹达内维奇的回答。

Stanford JS加密库包含SHA-256的实现。虽然JS中的加密并不像其他实现平台那样经过严格审查,但这个项目至少部分是由Dan Boneh开发的,在一定程度上是由Dan Boneh赞助的,Dan Boneh在加密领域是一个公认的受信任的名字,这意味着该项目有一些真正知道他在做什么的人的监督。该项目也得到了国家科学基金会的支持。

但是,值得指出的是…
…,如果您在提交密码之前在客户端对其进行散列,那么散列就是密码,原始密码就变得不相关了。攻击者只需要截获散列就可以模拟用户,如果该散列未修改地存储在服务器上,那么服务器将以纯文本形式存储真正的密码(散列)。

 类似资料:
  • 问题内容: 我正在为论坛编写登录名,并且需要先在javascript中对密码客户端进行哈希处理,然后再将其发送到服务器。我在弄清楚我可以信任的SHA-256实现方面遇到麻烦。我期望每个人都可以使用某种权威的脚本,但是我发现很多负载不同的项目都有自己的实现。 我意识到使用他人的加密货币始终是一种信念的飞跃,除非您有资格自己审查它,并且没有“信任”的通用定义,但这似乎很常见且重要,应该有某种意义关于使

  • 问题内容: 为什么是选择?如果添加了想要的新列,这是否意味着更少的代码更改? 我知道这在某些数据库上是性能问题,但是如果您真的想要每列,该怎么办? 问题答案: 确实有三个主要原因: 将数据转移到消费者方面效率低下。 当您选择SELECT *时,通常从数据库中检索到的列数超出了应用程序实际需要运行的列数。这将导致更多数据从数据库服务器移至客户端,从而减慢访问速度并增加计算机上的负载,并花费更多时间在

  • 问题内容: 如果没有覆盖该方法,默​​认的实现是什么? 问题答案: 然后,此类从其祖先之一继承。如果它们都不覆盖它,则使用Object.hashCode。 从文档: 在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。(通常通过将对象的内部地址转换为整数来实现,但是JavaTM编程语言不需要此实现技术。) 因此默认实现是特定于JVM的

  • 我有一个问题,关于什么是正确的做法,使用SwingU实用程序的调用稍后方法。 所以首先,我想确认我理解正确。 据我所知,对GUI的更改必须在EDT上完成,因为Swing组件不是线程安全的。invokeLater方法将Runnable作为参数,该Runnable中包含的任何内容都将在EDT上运行。因此,对Swing组件的任何调用都被放入一种队列中,在EDT上一次执行一个。 有了这些,我的问题是:使用

  • 问题内容: 我问了一个一般性的Spring问题:自动播发Spring Bean,并让多个人回答说应尽可能避免调用Spring 。这是为什么? 我还应该如何访问配置了Spring创建的Bean? 我在非Web应用程序中使用Spring,并计划按照LiorH的描述访问共享对象。 修正案 我接受下面的答案,但这是Martin Fowler的另一种选择,他讨论了依赖注入与使用(本质上与调用相同)的优点。

  • 问题内容: 我知道这被认为是不良做法;并且,我希望整理出一份为什么要向第三方供应商提交的原因清单,说明为什么他们不应该在其分析代码的实现中使用它们。 请在下面说明您提出不良做法的理由。 问题答案: 一些较严重的问题: document.write(此后称为DW)在XHTML中不起作用 DW不会直接修改DOM,从而阻止了进一步的操作 (试图寻找证据,但充其量只是视情况而定) 页面加载完成后执行的DW