Суббота, 14.06.2025, 06:52
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Примеры шифрования [8]
Шифрование методом Льюиса, Шифрование методом Атбаш, Шифрование методом Цезаря, Квадрат Полибия, Шифр Вижинера, Шифр Гронсфельда, Шифрование с помощью решетки, Шифр Хилла (с длиной блока = 2),
Наш опрос
Как хорошо вы знаете Паскаль
Всего ответов: 332
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Шифрование текстов на паскале » Примеры шифрования

Шифрование с помощью решетки
const
  n = 8;
type
  sType = string[n];
  matrix = array[1 .. n] of sType;
const
  mask: matrix = (
  'x...x...',
  '.x...x..',
  '..x...x.',
  '...x...x',
  '..x...x.',
  '...x....',
  'x...x..x',
  '..x..x..'
  );
 
  st: string =
  'сколькоцелыхчетырёхзначныхчиселможнополучитьизцифрнольодиндватри';
 
var
  encoded: matrix;
  masked: matrix;
 
{ Процедура поворота матрицы }
procedure T(var res: matrix);
var
  i, j: integer;
  mx: matrix;
begin
  mx := res;
  for i := 1 to n do
  for j := 1 to n do
  res[j, n - i + 1] := mx[i, j];
end;
 
{ Зашифровка текста }
procedure EncodeText(const s: string;
  const mask: matrix; var mx: matrix);
var
  i, j, count: integer;
  masked: matrix;
begin
  { Заполнение матрицы mx строками по N пробелов }
  for i := 1 to n do
  for j := 1 to n do mx[i] := mx[i] + #32;
 
  masked := mask;
  count := 1;
  while count <= length(s) do begin
 
  for i := 1 to n do
  for j := 1 to n do
  if masked[i, j] = 'x' then begin
  mx[i][j] := s[count];
  inc(count)
  end;
  T(masked);
 
  end;
end;
 
{ Расшифровка текста }
function DecodeText(const mask, encoded: matrix): string;
var
  s: string;
  i, j, count: integer;
  masked: matrix;
begin
 
  masked := mask;
  count := 0; s := '';
  while length(s) < n*n do begin
  for i := 1 to n do
  for j := 1 to n do
  if masked[i, j] = 'x' then s := s + encoded[i, j];
  T(masked);
  end;
  DecodeText := s;
 
end;
var
  i: integer;
begin
 
  EncodeText(st, mask, encoded);
 
  writeln('encoded text: ');
  for i := 1 to n do begin
  writeln(encoded[i]);
  end;
 
  writeln(DecodeText(mask, encoded));
 
end.






Категория: Примеры шифрования | Добавил: Student (29.07.2009)
Просмотров: 4300 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
  • Курсовая работа
  • www.des.h19.ru - портал для вас и Вашего ПК



    Rambler's Top100 WOlist.ru - каталог качественных сайтов Рунета