我可以将第二个哈希的sha256哈希转换为第一个哈希吗?
第二个哈希是由sha256(1)生成的,所以可以反转到第一个哈希值吗?
简而言之,截至2019年,NO。
简而言之,加密哈希函数是单向确定性但随机函数。确定性意味着相同的输入始终具有相同的输出,并且在输出不可预测的意义上是随机的。
在Cryptography中,我们考虑哈希函数的安全性
x'
,使得h(x') = y
在给定任何y时相应的输入是未知的。x
,找到第二原像x' != x
,使得h(x) = h(x')
,在计算上是不可行的。x
,x'
,它们散列到相同的输出,即h(x) = h(x')
。你要找的是原像。对于那些碰撞,存在诸如MD4和SHA-1之类的加密散列函数。但他们所有人仍然具有前和前2的抗原性。
对于Sha256,没有已知的中学前碰撞攻击。它被认为是安全散列函数。
您可以找到SHA-256的一些彩虹表,其中可能包含您的哈希值,但可能不是因为空间太大而无法覆盖。
散列是一种单向过程。如果散列算法很容易可逆,那么它就是不安全的。要回答你的问题,不,不可能“unhash”2并获得1.为了“破解”第二个哈希,你必须通过计算其他字符串的sha256并将结果与2进行比较来强制它。如果它们匹配,那么您(可能)具有原始字符串。
Sha256是一个哈希函数,如维基百科https://en.wikipedia.org/wiki/Cryptographic_hash_function中所定义:
理想的加密哈希函数有五个主要属性:
- 它是确定性的,因此相同的消息总是会产生相同的散列
- 它可以快速计算任何给定消息的哈希值
- 除了尝试所有可能的消息之外,从其散列值生成消息是不可行的
- 对消息进行小的更改应该如此广泛地更改哈希值,以使新哈希值看起来与旧哈希值不相关
- 找到具有相同散列值的两个不同消息是不可行的
根据定义,只要您无法反转输入,哈希函数就很有用。