$slovo ="kakoynibudtext";//вводим шифр текст $blok = 4;// вводим длинну блока
function gen($c,$a){ global $symb, $blok, $ch; foreach($symb as $v){ $a[$c-1]= $v; if(array_unique($a)== $a){ if($c==$blok){ $ch[]= implode('',$a); } else { $array = gen($c+1,$a); } } } } $ch = array(); $abcd = substr("123456789", 0, $blok); $symb = str_split($abcd); gen(1,array());//генерируем алгоритмы расшифровки в массиве foreach ($ch as $alg)//пытался выдирать по элементу массива и записывать в alg, в общем от сюда и началась проблемка... $res2 = str_split($alg); for ($i=0;$i<count($res2);$i++) $res2[$i]--; for ($i=0;$i<count($res2);$i++){ $d = $res2[$i]; $res3[$d]=$i; } $res = str_split($slovo,$blok); for ($i=0;$i<count($res);$i++) $res1[]= str_split($res[$i]); for ($i=0;$i<count($res1);$i++){ for ($j=0;$j<count($res1[0]);$j++){ $b = $res3[$j]; $hash.=$res1[$i][$b]; } } echo $hash;//вывод возможных вариантов
Задача этого скрипта расшифровка шифр-текста так сказать "брутом", а после вывод возможных вариантов расшифровки, но выводит у меня только вариант расшифровки с помощью последнего элемента(ключа) в массиве $ch.
Помогите вывести все варианты з.ы. на всякий случай... шифрование производится следующим методом: Вводим слово для шифрования, ну или текст, потом длину блока, на которую делим слово и ключ перестановки (в пределах длины блока).
Пример:
строка: привет длинна блока: 4 (т.е. делим строку на блоки по 4 буквы и если в блоке не хватает букв, то дополняется рандомными буквами в данном случаем пусть будет "ос") алгоритм: 3124