Не получается расшифровать сообщение:
Известно, что в сообщение есть слово:
Зашифрованное следующим алгоритмом: используется русский алфавит А-Я (кроме Ё). А-0, Б-1, В-3... ключ из 3-х букв. Шифруется так, например ключ будет ЛОЛ (т.е. 11 14 11) нужно зашифровать строку "АБВГД", делается это так А=11(Л)+0(А)=Л, Б=14(О)+1(Б)=П, В=11(Л)+2(В)=Н, Г=11(Л)+3(Г)=О, Д=14(О)+4(Д)=Т получается "ЛПНОТ". Т.е. к каждой букве сообщения прибаляется буква ключа по порядку.
Не могу найти никак ошибку в коде, при расшифровке выдается не то что нужно... вот код:
предположительно ошибка в дешифровке сообщения (в организации цикла), когда ключ уже найден.
Плс ХЕЛП!!! Замучился уже...
Код |
---|
ДАЙРБСБЪЧОФСБЩДЙЬГЫЧНГЭЗЙУТТЭЖЮФХКЪЧДЭПКСТЙУЧЧАТПЭИПВЦЗРГСЯМ ОЬЙРАЦВСМНЭСЩБТГОЙОВЙЫФРРЪМФЛХБЫТЕ |
Известно, что в сообщение есть слово:
Код |
---|
ВОЗДУХ |
Зашифрованное следующим алгоритмом: используется русский алфавит А-Я (кроме Ё). А-0, Б-1, В-3... ключ из 3-х букв. Шифруется так, например ключ будет ЛОЛ (т.е. 11 14 11) нужно зашифровать строку "АБВГД", делается это так А=11(Л)+0(А)=Л, Б=14(О)+1(Б)=П, В=11(Л)+2(В)=Н, Г=11(Л)+3(Г)=О, Д=14(О)+4(Д)=Т получается "ЛПНОТ". Т.е. к каждой букве сообщения прибаляется буква ключа по порядку.
Не могу найти никак ошибку в коде, при расшифровке выдается не то что нужно... вот код:
Код |
---|
<?php //задаем массив сообщения $kod = array(Д,А,Й,Р,Б,С,Б,Ъ,Ч,О,Ф,С,Б,Щ,Д,Й,Ь,Г,Ы,Ч,Н,Г,Э,З,Й,У,Т, Т,Э,Ж,Ю,Ф,Х,К,Ъ,Ч,Д,Э,П,К,С,Т,Й,У,Ч,Ч,А,Т,П,Э,И,П,В,Ц,З,Р,Г, С,Я,М,О,Ь,Й,Р,А,Ц,В,С,М,Н,Э,С,Щ,Б,Т,Г,О,Й,О,В,Й,Ы,Ф,Р,Р,Ъ,М, Ф,Л,Х,Б,Ы,Т,Е); //задаем массив вспомогательного слова $slovo = array(В,О,З,Д,У,Х); //задаем массив алфавита $alf = array(); foreach(range(А, Я) as $letter) { array_push($alf,$letter); } //переделываем буквы зашифрованного сообщения в цифры $kod_ch = array(); $kol = count($kod); for($i=0; $i <=$kol; $i++) { $zn_buk = array_search("$kod[$i]",$alf); array_push($kod_ch,$zn_buk); } //переводим вспомогательное слово в код $kod_sl = array(); $kolsl = count($slovo); for($i=0; $i <=$kolsl; $i++) { $zn_buk = array_search("$slovo[$i]",$alf); array_push($kod_sl,$zn_buk); } //ищем ключ, находя вспогательное слово в коде сообщения $kolch = count($kod_ch); for($i=0; $i <($kolch-6); $i++) {if(($kod_ch[$i]-$kod_ch[($i+3)])==($kod_sl[0]-$kod_sl[3])) { if(($kod_ch[($i+1)]-$kod_ch[($i+4)])==($kod_sl[1]-$kod_sl[4])) {if(($kod_ch[($i+2)]-$kod_ch[($i+5)])==($kod_sl[2]-$kod_sl[5])) { $slovo_in = array(); for ($l=$i; $l <($i+6); $l++) { array_push($ slovo_in,$kod_ch[$l]); } $key = array(); for($f=0; $f <3; $f++) { $zn = ($slovo_in[$f]-$kod_sl[($f)])%30; $zn = abs($zn); array_push($key,$zn); echo $alf[$key[$f]].</br>; } } } } } //дешифруем сообщение с помощью найденого ключа $isxod = array(); $lol = count($kod_ch); for($i=0;$i< $lol; $i++) { for($t=0; $t<3; $t++) { $cg = abs(($kod_ch[$i+$t]-$key[$t])%30); array_push($isxod,$cg); } $i=$i+2; } //вывводим зашифрованное сообщение for($i=0; $i < count($isxod); $i++) { echo $alf[$isxod[$i]]; } ?> |
предположительно ошибка в дешифровке сообщения (в организации цикла), когда ключ уже найден.
Плс ХЕЛП!!! Замучился уже...