Php 我可以根据它产生的结果找到sha256哈希吗?

Php 我可以根据它产生的结果找到sha256哈希吗?,php,hash,sha256,Php,Hash,Sha256,好了,伙计们,基本上我有以下代码: $code ="39b7d32fcb743c244c569a56d6de4dc27577d6277d6cf155bdcba6d05befcb34"; $code2 = "9999999"; $code3 = "56985"; $hash = hash("sha256",$code."-".$code2."-".$code3); $result = hexdec(substr($hash,0,8)) % 15; echo $result; 这是一个随机数发生器

好了,伙计们,基本上我有以下代码:

$code ="39b7d32fcb743c244c569a56d6de4dc27577d6277d6cf155bdcba6d05befcb34";
$code2 = "9999999";
$code3 = "56985";
$hash = hash("sha256",$code."-".$code2."-".$code3);
$result = hexdec(substr($hash,0,8)) % 15;
echo $result;
这是一个随机数发生器,范围从0到14。 code3变量是唯一一个不断变化的变量(当然也是结果),其他变量是静态值。生成每个数字后,code3值增加1。 问题是,我没有
$code
值,至少目前没有,它会定期更改,当它更改时,会显示以前的代码。我的任务是在代码值改变之前找到它,它看起来像是一个sha256散列(如果我错了,请纠正我)。当前的
$code
值是我唯一没有的,所以我的问题是:我是否可以根据最近10个左右的结果找到它,就像一个散列破解代码一样,比较结果并给出可能的一个或多个散列?如果是,我从哪里开始?多谢各位


编辑:我不需要解密散列或将其反转,我只需要按原样找到散列。$code变量是一个sha256哈希,我不知道,这就是我必须弄清楚的。即使是通过暴力手段。

sha256哈希是单向的,不能逆转


因此,除非使用蛮力方法,否则无法恢复代码。

哈希是将字符串单向转换为通常较短的固定长度值或表示原始字符串的键

SHA(安全哈希算法)是许多加密哈希函数之一。加密散列类似于文本或数据文件的签名。SHA-256算法生成一个几乎唯一、固定大小的256位(32字节)散列

SHA-256是SHA-1的后续哈希函数之一,也是可用的最强哈希函数之一

每个散列都不能通过计算恢复,但可以在蛮力散列的纯文本之间映射,如

a -> ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
b -> 3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d
.
.
如果遇到相同的散列数据,则表示您知道明文。 通常,人们生成明文和散列文本的映射,然后使用数据库查找

因此,这提供了一个大的哈希数据库,您可以尝试还原它。 尽管您可以使用此方法恢复哈希,但并没有人拥有所有可能的具有单词的数据库。它只包含字典上的单词或常用的密码单词。


有关更多信息,您可以使用以下关键字:“彩虹表”、“散列”、“反向散列查找”、“加密散列函数”

SHA-256旨在通过查看输出来查找原始值。对于简短的密码,可以进行暴力攻击,并尝试任何组合,直到找到匹配的密码

在您的例子中,需要查找的
$code
是一个64字符的字符串,它看起来像随机32字节键的十六进制表示形式。有了32字节的信息,您可以描述1E77组合,因此,使用它,您仍然需要大约1E58年的时间来使用暴力


因此,除非您能够找到有关密钥的其他信息(例如,某个方案),否则无法获取代码。尽管如此,这个例子是一个糟糕的随机数生成器实现,从操作系统的随机源读取一个字节会更安全、更便宜。

对不起,我解释得不是很好。我不需要解密散列,我需要知道散列是什么。
$code
变量是一个sha256散列,我需要知道,而不是解密,我只需要找到它的值,我将它用作散列。基本上,我有这个$code变量。我放在那里的那个散列是最后一个公开的散列,目前代码生成数字上有另一个散列,这个散列是隐藏的,我可以访问所有其他数字和生成的结果,我需要找到散列是什么,而不是转换或反转它,只知道64位数字。如果我解释得很糟糕,我很抱歉:/我不知道你想做什么,我看到你在问“我是否有可能根据最近10个左右的结果找到它,就像一个散列破解代码一样,比较结果并给我可能的散列?”我的答案在上面。试着告诉你如何破解代码。对不起,我解释得不太好。我不需要解密散列,我需要知道散列是什么。$code变量是一个sha256散列,我需要知道,而不是解密,我只需要找到它的值,我会将它用作散列。我拥有的是过去使用的代码和它生成的所有数据。所以不可能破解?@MarcielFonseca-只要
$code
确实是一个随机密钥,并且没有遵循特定的方案-是的,不可能破解。基于这些代码,没有其他密钥可以生成相同的结果,对吗?e、 g我生成随机数并测试我是否能重现所有相同的过去结果etc@MarcielFonseca-多个代码可能导致相同的哈希值,这称为冲突,但可能性很小。当然,你可以生成和测试随机数,这只是野蛮的强迫。由于巨大的键空间,不可能在合理的时间内找到匹配项。无论谁遇到此问题,请阅读此处:。然后买些箱子钥匙。你永远不会打破帝国;)