我最近开始尝试了解密码学并发现了SHA-2(特别是SHA-256),并且无法找到特别经过散列步骤的实际算法。如果有人使用JavaScript的工作算法来通过SHA-256散列放置一个字符串,这将有所帮助。
我知道这可能不可能,但我试图了解SHA-256如何散列字符串以尝试反转SHA-256。
注意:我意识到这是最常见的安全散列形式,我绝不会尝试用这些知识做有害行为(如果我成功的话)。
Edit1:如果可能的话,我希望SHA-256算法适合单个.js文件。我正在为自己将SHA-256实现为Tampermonkey脚本,并希望学习如何逆转它。
答案 0 :(得分:4)
Here是JS中SHA-256的一个实现。当你破解它时让我知道。
Sha-256是单向散列函数,意味着它使用您的输入作为种子并返回固定长度的输出(在这种情况下为256位)。该算法是确定性的并且看似随机。这意味着对于任何给定的输入,它将返回相同的输出,但是当进行统计测试时,输入和输出之间没有相关性。
因此,如果不使用哈希随机输入的强力方法,就无法反转sha256哈希。凭借当前的计算能力,这不是一个真正可行的选择。
答案 1 :(得分:1)
(@Spectre提示,我会发布我的初步评论以及其他相关信息(提供我的@Spectre以及OP本人)作为答案)
你(几乎)不可能扭转哈希;哈希破解反而集中在
如果我们在讨论中假设所有散列算法都是不可逆的,并且可以立即识别,则散列的强度将大致取决于散列算法的复杂性;在某种意义上说,使用更复杂的散列方法(如SHA-256)进行重新散列(如在尝试字典攻击等时执行)将比使用天真的非盐析散列算法执行重新散列时更慢的时间顺序,比如说非盐渍MD5。
粗略地学习“hows”并没有什么害处,我建议阅读这篇关于这个主题的优秀Ars Technica文章:
以及这种出色的安全性.SQ Q& A
从评论中收集相关的其他信息(因为这些信息可能不会持续时间):
正如@Specte指出的那样,值得参与的相关主题是:
关于为什么反转哈希算法是不可行的主题,你已经指出了一个相关的安全性。自己编写线程:
答案 2 :(得分:-1)
我最近使用了crypto-js/sha256
。
您可以通过以下命令使用nodejs进行安装:
npm install --save crypto-js