[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Шифр Цезаря
sh3lla
Всем привет, я новичок в php, и иногда пытаюсь писать некоторые программки. В этот раз выбрал шифр Цезаря ( это шифр, в котором каждый символ в тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите; например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее). Прога должна была шифровать и дешифровать слова, но возникла проблемка при дешифрации. Например, если взять букву "А" и дешифровать со сдвигом в 1 шаг, т.е. должна появится буква "Z" - всплывает ошибка. Т.е. массив не просматривается заново, а останавливается на букве "А".
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>
Шифр Цезаря</title>
<link
href="Style.css" rel="stylesheet">
</head>
<body>
<div
class="body">
<div
class="sa">
<form
action='fail6.php' method='POST'>
<H1
align="center">Введите слово, для шифрования/дешифрования!</H1>
<div
class="1" align="center">
<i>
Сообщение может содержать только буквы английского алфавита*</i><br><br>
<input
type='text' name='text' size=100>
<H1
align="center">Введите количество шагов, для сдвига!</H1>
<i>
Доступны только числа в диапазоне от 1 до 25*</i><br><br>
<input
type='number' name='number' min='1' max='25'><br><br>
<input
type='Submit' value='Зашифровать' name='but'>
<input
type='Submit' value='Расшифровать' name='but2'>
</div>
</div>
</div>
</form>

</body>
</html>

<?php
if(isset($_POST['but']))
{
$name=$_POST['text'];
$num=$_POST['number'];

if(preg_match ('@[A-z]@u',$name) and preg_match ('/[0-9]/',$num))
{

$X=strtoupper($_POST['text']); //Преобразует строку в верхний регистр
$alph=array('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');
$N=count($alph);//Считает кол-во букв
$b="";
$n=strlen($X); //Возвращает длину строки

for($i=0;$i<$n;$i++)
for($j=0;$j<$N;$j++)
{
if($X[$i]==$alph[$j])
{
$b= $b . $alph[ ($j+$num) % $N];
}
}


print "Зашифрованное слово:\t". $b ;
}
else {
print "Не правильное слово для кодирования! ";
}
}

if(isset($_POST['but2']))
{
$name=$_POST['text'];
$num=$_POST['number'];

if(preg_match ('@[A-z]@u',$name) and preg_match ('/[0-9]/',$num))
{

$X=strtoupper($_POST['text']); //Преобразует строку в верхний регистр
$alph=array('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');
$N=count($alph);//Считает кол-во букв
$b="";
$n=strlen($X); //Возвращает длину строки

for($i=0;$i<$n;$i++)
for($j=0;$j<$N;$j++)
{
if($X[$i]==$alph[$j])
{
$b= $b . $alph[ ($j-$num) % $N];
}
}


print "Расшифрованное слово:\t". $b ;
}
else {
print "Не правильное слово для кодирования! ";
}
}

?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.