я имею SHA256
хэш-текст, и я знаю, что оригинальный текст является строкой и состоит из 0-9 числа а также буквы а-я, а-я это в диапазон (000000-ZZZZZZ).
Этот код проверяет все возможные варианты и возвращает исходный текст
Этот код работает долго (например, если длина строки равна 5, она работает 30 минут, для случая, если длина 6 — 30 * 62 минут) и я думаю, что это не лучшее решение для этого случая.
Пожалуйста, помогите оптимизировать это.
$count=0;
$start_date =microtime(true);
$s=array(0,1,2,3,4,5,6,7,8,9,"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
for($g=0;$g<62;$g++)
{
for($h=0;$h<62;$h++)
{
for($i=0;$i<62;$i++)
{
for($j=0;$j<62;$j++)
{
for($k=0;$k<62;$k++)
{
for($l=0;$l<62;$l++)
{
$count++;
if (hash("sha256",$s[$g].$s[$h].$s[$i].$s[$j].$s[$k].$s[$l])=='0a482c589594109cea209233a1f3bfa51f8a52e4534c40e9511c6030ee0f594a')// string is ZZZZZZ
{
echo $s[$g].$s[$h].$s[$i].$s[$j].$s[$k].$s[$l]."<br/>";
echo $count."<br/>";
$end_date =microtime(true);
echo ($end_date-$start_date)/60;
break(6);
}
}
}
}
}
}
}
Вы не можете оптимизировать его, чтобы сломать 0-9a-zA-Z
быстрый. Конечно, Вы можете немного оптимизировать этот код (также изменить PHP на Python или что-то более быстрое), но только дало Вам повышение от 30 минут до 10 минут за 5 символов. 6 символов нужно много около 6 часов. И 7 символов измеряется в днях. 8 символов в годах и т. Д. Это невозможно сделать быстрее.
Вы должны знать, что sha256 — это метод шифрования, который, по предположению, не позволяет расшифровать, это цель этого метода. К сожалению (к счастью для Вас), в случае коротких строк возможно расшифровать в короткие сроки.
Других решений пока нет …