Реализация на php алгоритма шифра Цезаря (только сильно не смейтесь
).
C работой скрипта можно ознакомиться здесь.
Исходный код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Криптография - шифр Цезаря</title>
</head>
<body>
<form method="post">
Исходный текст:<br />
<textarea rows="10" cols="40" name="text">это текст который нужно зашифровать шифр цезаря один из древнейших шифров при шифровании каждый символ заменяется другим отстоящим от него в алфавите на фиксированное число позиций шифр цезаря можно классифицировать как шифр подстановки при более узкой классификации шифр простой замены</textarea><br />
Смещение: <input type="text" value="3" name="shift" /><br />
<input type="submit" name="go" value="Шифровать!" />
</form>
<?php
if(isset($_POST['go'])){
$text = $_POST['text'];
$alphabet = array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ь', 'ы', 'ъ', 'э', 'ю', 'я');
for($i=0; $i<count($alphabet); $i++){
$a = $i - $_POST['shift'];
$tmp[$alphabet[$i]] = $i;
if ($a<0) $a += count($alphabet);
$alphabet_new[$a] = $alphabet[$i];
}
$alphabet = $tmp;
// посчитаем частотность символов в исходном тексте
$strlen = strlen($text);
$letters = array();
$letters2 = array();
$letters3 = array();
for($i=0; $i<$strlen; $i++){
if(isset($letters[$text[$i]])){
$letters[$text[$i]]++;
}else{
$letters[$text[$i]]=1;
}
// Шифруем
if(in_array($text[$i], $alphabet_new)){
$cryptogram .= $alphabet_new[$alphabet[$text[$i]]];
// усовершествуем
$sdvig = ($i % (count($alphabet)));
$sdvig += $alphabet[$text[$i]];
if ($sdvig>count($alphabet)-1) $sdvig -= count($alphabet) - 1;
$cryptogram2 .= $alphabet_new[$sdvig];
}else{
$cryptogram .= $text[$i];
$cryptogram2 .= $text[$i];
}
}
for($i=0; $i<$strlen; $i++){
// считаем статистику для зашифрованного 1го и 2го
if(isset($letters2[$cryptogram[$i]])){
$letters2[$cryptogram[$i]]++;
}else{
$letters2[$cryptogram[$i]]=1;
}
if(isset($letters3[$cryptogram2[$i]])){
$letters3[$cryptogram2[$i]]++;
}else{
$letters3[$cryptogram2[$i]]=1;
}
}
// сортируем
arsort($letters);
$keys = array_keys($letters);
arsort($letters2);
$keys2 = array_keys($letters2);
arsort($letters3);
$keys3 = array_keys($letters3);
echo '<table><tr><td>';
echo '<br /><table>';
echo '<tr><td>Символ</td><td>Частота</td><td>Проценты</td></tr>';
for($i=0; $i<count($letters); $i++){
$procent = $letters[$keys[$i]]*100/$strlen;
$procent = substr($procent, 0, 4);
echo '<tr><td>'.$keys[$i].'</td><td>'.$letters[$keys[$i]].'</td><td><img src="dot.gif" border="0" width="'.($procent*10).'" height="10">'.$procent.'%</td></tr>';
}
echo '</table>';
echo '</td><td>';
echo '<b>Обычный:</b><br /><table>';
echo '<tr><td>Символ</td><td>Частота</td><td>Проценты</td></tr>';
for($i=0; $i<count($letters2); $i++){
$procent = $letters2[$keys2[$i]]*100/$strlen;
$procent = substr($procent, 0, 4);
echo '<tr><td>'.$keys2[$i].'</td><td>'.$letters2[$keys2[$i]].'</td><td><img src="dot.gif" border="0" width="'.($procent*10).'" height="10">'.$procent.'%</td></tr>';
}
echo '</table>';
echo '</td><td>';
echo '<b>Усовершенствованный:</b><br /><table>';
echo '<tr><td>Символ</td><td>Частота</td><td>Проценты</td></tr>';
for($i=0; $i<count($letters3); $i++){
$procent = $letters3[$keys3[$i]]*100/$strlen;
$procent = substr($procent, 0, 4);
echo '<tr><td>'.$keys3[$i].'</td><td>'.$letters3[$keys3[$i]].'</td><td><img src="dot.gif" border="0" width="'.($procent*10).'" height="10">'.$procent.'%</td></tr>';
}
echo '</table>';
echo '</td></tr></table>';
echo '<b>Всего символов в тексте: '.$strlen.'</b><br />';
// Шифруем
echo '<b>Зашифрованный текст:</b><br /><textarea rows="10" cols="40">';
echo $cryptogram;
echo '</textarea>';
echo '<br /><b>Зашифрованный улучшенно текст:</b><br /><textarea rows="10" cols="40">';
echo $cryptogram2;
echo '</textarea>';
}
?>
</body>
</html>
Это начало. Дальше будет немного посложнее и, надеюсь, поинтереснее и полезнее.
P.S. В скрипте используется картика »dot.gif» — вместо нее можно взять любую однородную гифку, она будет использоваться для построения примитивных графиков.
UPD 23/03/2012
Сегодня заметил много переходов с контакта людей учащихся на АВТФ. Ребятки, мой вам совет, не пытайтесь подсунуть найденное здесь Минину
Он вас сразу раскусит и лучше от этого точно не будет. Используйте как возможность понять принцип работы алгоритма.
И это, посоветуйте мой сайт http://ekl.mn/ своим друзьям и знакомым
Вам он после универа тоже пригодиться!

Епт… Я о#?ел короче:)) Стока много букоф в коде
) Рассказывай в чем смысл шифровки ?:)
Ух епт, там же все просто
Берется исходный текст и каждый символ сдвигается на какое-то число. Например при сдвиге на 3 буква «а» станет буквой «г», «б» станет «д» и т.д.
Ну вот теперь все понятно
) Я мельком глянул… Думаю еж ты мое… Сколько букаф много… Про сдвиг кста подумал… Оказалось верно
Хех
)
Реализовывал такой на java в рамках лабораторной работы в Институте))
вот мой вариант))) токо что написал
$alphastr = 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЬЭЮЯ'; $arr = array('А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ы','Э','Ю','Я',' '); function cryptCesar($crypttext = '', $_step = 1, $arrword = array()){ $arr = $arrword; $i = 0; while($i < strlen($crypttext)) { $word = $crypttext[$i]; $k = 0; while($k = count($arr)) $step =$step - (count($arr)); if(strtolower($word) == strtolower($arr[$k])) { if($word == ' ') $str .= ' '; if($word == ',') $str .= ','; if($word == '.') $str .= '.'; else $str .= $arr[$step]; break; } $k++; } $i++; } return strtolower($str); } function decryptCesar($crypttext = '', $_step = 1, $arrword = array()) { $arr = $arrword; $i = 0; while($i < strlen($crypttext)) { $word = $crypttext[$i]; $k = 0; while($k = count($arr)) $step =$step- (count($arr)); if(strtolower($word) == strtolower($arr[$k])) { if($word == ' ') $str .= ' '; else $str .= $arr[$step]; break; } $k++; } $i++; } return strtolower($str); }поправь в примере, чтоб кодировку ставил, в мозиле руками приходится делать
Поправил