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

Javascript SHA-256算法和/或去散列算法,javascript,algorithm,hash,sha256,Javascript,Algorithm,Hash,Sha256,我最近开始尝试学习密码学,发现了SHA-2(特别是SHA-256),但找不到一个经过哈希运算的实际算法。如果有人有JavaScript的工作算法,可以通过SHA-256散列将字符串放入,这将非常有用 我知道这可能是不可能的,但我正在尝试学习SHA-256如何对字符串进行哈希,以便尝试反转SHA-256 注意:我意识到这是最常见的安全散列形式,我决不会试图用这种知识做有害的行为(如果我成功的话) Edit1:如果可能的话,我希望SHA-256算法适合单个.js文件。我正在为自己将SHA-256实现

我最近开始尝试学习密码学,发现了SHA-2(特别是SHA-256),但找不到一个经过哈希运算的实际算法。如果有人有JavaScript的工作算法,可以通过SHA-256散列将字符串放入,这将非常有用

我知道这可能是不可能的,但我正在尝试学习SHA-256如何对字符串进行哈希,以便尝试反转SHA-256

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

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

是SHA-256在JS中的一个实现。当你打开它时,请告诉我

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

因此,如果不使用暴力散列随机输入的方法,就无法反转sha256散列。就目前的计算能力而言,这并不是一个切实可行的选择。

是JS中SHA-256的一个实现。当你打开它时,请告诉我

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

因此,如果不使用暴力散列随机输入的方法,就无法反转sha256散列。以目前的计算能力,这并不是一个切实可行的选择。

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


逆转实际的SHA-256算法:不可行,也不是破解给定哈希密码的方法 你(几乎)不可能逆转散列;散列破解的重点不是

  • 找到散列算法,包括盐
  • 然后是蛮力方法,对可能的密码进行散列,并尝试将结果散列与要“破解”的散列进行匹配 在讨论中,如果我们假设所有的散列算法都是不可逆的,并且是可立即识别的,那么散列的强度将大致取决于散列算法的复杂性;在某种意义上,使用更复杂的散列方法(如SHA-256)重新散列(在尝试字典攻击等时执行)将比使用简单的非盐散列算法(如非盐MD5)执行重新散列慢几个数量级

    大致学习“如何”没有坏处,我建议阅读这篇关于这一主题的优秀Ars Technica文章:

    以及这出色的安全性。SE Q&A


    其他参考资料 从对您的问题的评论中收集相关的附加信息(因为这些信息可能不会持续时间):

  • 正如@Specte指出的,值得一看的相关线程是:

  • 关于为什么反转哈希算法不可行的问题,您自己已经指出了一个相关的security.SE线程:

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


    逆转实际的SHA-256算法:不可行,也不是破解给定哈希密码的方法 你(几乎)不可能逆转散列;散列破解的重点不是

  • 找到散列算法,包括盐
  • 然后是蛮力方法,对可能的密码进行散列,并尝试将结果散列与要“破解”的散列进行匹配 在讨论中,如果我们假设所有的散列算法都是不可逆的,并且是可立即识别的,那么散列的强度将大致取决于散列算法的复杂性;在某种意义上,使用更复杂的散列方法(如SHA-256)重新散列(在尝试字典攻击等时执行)将比使用简单的非盐散列算法(如非盐MD5)执行重新散列慢几个数量级

    大致学习“如何”没有坏处,我建议阅读这篇关于这一主题的优秀Ars Technica文章:

    以及这出色的安全性。SE Q&A


    其他参考资料 从对您的问题的评论中收集相关的附加信息(因为这些信息可能不会持续时间):

  • 正如@Specte指出的,值得一看的相关线程是:

  • 关于为什么反转哈希算法不可行的问题,您自己已经指出了一个相关的security.SE线程:


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

    npm install --save crypto-js
    

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

    npm install --save crypto-js
    

    这是你如何逆转的沙:你没有。那些把职业生涯花费在这类事情上的人是无法打破它的,所以你很有可能让自己失望。还有:如果你打破了这些东西,你会