SHA-256算法和/或去散列算法

时间:2016-03-30 23:33:30

标签: javascript algorithm hash sha256

我最近开始尝试了解密码学并发现了SHA-2(特别是SHA-256),并且无法找到特别经过散列步骤的实际算法。如果有人使用JavaScript的工作算法来通过SHA-256散列放置一个字符串,这将有所帮助。

我知道这可能不可能,但我试图了解SHA-256如何散列字符串以尝试反转SHA-256。

注意:我意识到这是最常见的安全散列形式,我绝不会尝试用这些知识做有害行为(如果我成功的话)。

Edit1:如果可能的话,我希望SHA-256算法适合单个.js文件。我正在为自己将SHA-256实现为Tampermonkey脚本,并希望学习如何逆转它。

3 个答案:

答案 0 :(得分:4)

Here是JS中SHA-256的一个实现。当你破解它时让我知道。

Sha-256是单向散列函数,意味着它使用您的输入作为种子并返回固定长度的输出(在这种情况下为256位)。该算法是确定性的并且看似随机。这意味着对于任何给定的输入,它将返回相同的输出,但是当进行统计测试时,输入和输出之间没有相关性。

因此,如果不使用哈希随机输入的强力方法,就无法反转sha256哈希。凭借当前的计算能力,这不是一个真正可行的选择。

答案 1 :(得分:1)

(@Spectre提示,我会发布我的初步评论以及其他相关信息(提供我的@Spectre以及OP本人)作为答案)

反转实际的SHA-256 算法:不可行,而不是试图破解给定散列密码时的方法

你(几乎)不可能扭转哈希;哈希破解反而集中在

  1. 找到哈希算法,包括盐,
  2. 后面是强制方法,用于散列可能的密码,并尝试将生成的散列与您打算“破解”的一些散列进行匹配。
  3. 如果我们在讨论中假设所有散列算法都是不可逆的,并且可以立即识别,则散列的强度将大致取决于散列算法的复杂性;在某种意义上说,使用更复杂的散列方法(如SHA-256)进行重新散列(如在尝试字典攻击等时执行)将比使用天真的非盐析散列算法执行重新散列时更慢的时间顺序,比如说非盐渍MD5。

    粗略地学习“hows”并没有什么害处,我建议阅读这篇关于这个主题的优秀Ars Technica文章:

    以及这种出色的安全性.SQ Q& A

    其他参考资料

    从评论中收集相关的其他信息(因为这些信息可能不会持续时间):

    1. 正如@Specte指出的那样,值得参与的相关主题是:

    2. 关于为什么反转哈希算法是不可行的主题,你已经指出了一个相关的安全性。自己编写线程:

答案 2 :(得分:-1)

我最近使用了crypto-js/sha256。 您可以通过以下命令使用nodejs进行安装:

npm install --save crypto-js