Привет, друзья! Сейчас осваиваю азы шифрования данных на php без стандартных функций. Помогите разобраться.
Есть таблица. Когда пользователь вводит текст и нажимает "Зашифровать", каждая введенная буква заменяется на две другие буквы, которые обозначены серым цветом. С шифрование проблем нет, а вот с дешифровкой не могу разобраться. Перепробовал несколько способов и постоянно выдает результат с ошибками. Некоторые буквы правильно дешифрует, а некоторые нет.
Вот мой код. Подскажите, что я делаю не так?
<div class="container">
<br><br><br><br>
<form role="form" class="form form_control form-inline" method="POST">
<input class="form-control" type="text" name="stroka" placeholder="Введите свой текст сюда">
<input class="btn btn-success form-control" type="submit" value="Зашифровать" name="zashifr">
<input class="btn btn-danger" type="submit" value="Расшифровать" name="rash">
</form>
<?
$str=' ';
$flag=0;
/*эти три масива таблицы*/
$mas1=array("K", "A", "L", "G", "O", "N", "E");
$mas2=array("D", "Y", "R", "S");
$mas3=array(
array("a", "b", "c", "d", "e", "f", "g"),
array("h", "i", "j", "k", "l", "m", "n"),
array("o", "p", "q", "r", "s", "t", "u"),
array("v", "w", "x", "y", "z", ",", "."),
);
//объявление масиво завершено
$str=$_POST['stroka'];
if(isset($_POST['zashifr']))
{
if($str=='')
echo "Нечего зашифровывать. Строка пустая";
else
{//шифруем текст, если введен текст
for ($t=0; $t < strlen($str); $t++)
{
for ($i=0; $i < 4; $i++)
{
for ($j=0; $j < 7; $j++)
{
if($mas3[$i][$j]==$str[$t])
{
$no_i=$i;
$no_j=$j;
echo $mas2[$no_i];
echo $mas1[$no_j];
}
}
}
}
//шифровка завершена
}
}
if(isset($_POST['rash']))
{
if($str=='')
echo "Нечего РАСшифровывать. Строка пустая";
else
{//дешифруем текст, если введен текст
echo $str;
echo "<br>";
for ($t=0; $t < strlen($str); $t++)
{
for ($i=0; $i < 4; $i++)
{
if($mas2[$i]==$str[$t])
$bukva_1=$i;
}
for ($j=0; $j < 7; $j++)
{
if($mas1[$j]==$str[$t])
$bukva_2=$j;
}
echo $mas3[$bukva_1][$bukva_2];
}
//дешифровка завершена
}
}
?>
<p>Исходная таблица:</p>
<table class="table table-striped table-bordered table-condensed center">
<thead>
<?
echo "<tr><td style='background:#e4e4e4;'><center>/</center></td>";
for ($i=0; $i < 7; $i++)
{
echo "<td style='background:#e4e4e4;'><center>";
echo $mas1[$i];
echo "</center></td>";
}
?>
</thead>
<tbody>
<?
for ($i=0; $i < 4; $i++)
{
echo "<tr>";
for ($j=0; $j < 8; $j++)
{
echo "<td style='background:#e4e4e4;'><center>";
echo $mas2[$i];
echo "</center></td>";
for ($j=0; $j < 7; $j++)
{
echo "<td><center>";
echo $mas3[$i][$j];
echo "</center></td>";
}
}
echo "</tr>";
}
?>
</tbody>
</table>
</div>
{//дешифруем текст, если введен текст
echo $str;
echo "<br>";
for ($t=0; $t < strlen($str); $t++)
{
for ($i=0; $i < 4; $i++)
{
if($mas2[$i]==$str[$t])
$bukva_1=$i;
}
$t++; // отето надо
for ($j=0; $j < 7; $j++)
{
if($mas1[$j]==$str[$t])
$bukva_2=$j;
}
echo $mas3[$bukva_1][$bukva_2];
}
//дешифровка завершена
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники