Робохомячок

Программа на паскаль Подстановочные шифры Шифр Цезаря

Шифры Цезаря - это один из самых простых и широко известных методов шифрования, который был использован в древности для защиты конфиденциальной информации. В данной статье мы рассмотрим и напишем программу на языке Pascal для шифрования и дешифрования текста с использованием подстановочных шифров и метода Цезаря.

Подстановочные шифры

Подстановочные шифры - это метод шифрования, где каждая буква исходного текста заменяется на другую букву или символ с помощью заранее определенной таблицы замены. Таким образом, в итоге мы получаем зашифрованный текст, который не может быть легко прочитан без знания ключа.

Существует несколько различных типов подстановочных шифров, таких как шифр "Атбаш", "Морзе", "Шифр Полибия" и многие другие. В данной программе мы реализуем шифр Цезаря - один из самых простых и наиболее употребительных алгоритмов подстановочных шифров.

Шифр Цезаря

Шифр Цезаря - это метод подстановочного шифрования, где каждая буква исходного текста заменяется на другую букву на фиксированное количество позиций в алфавите. Например, при сдвиге на 3 позиции буква "А" заменяется на букву "Д", "Б" на "Е", "В" на "Ж" и т.д.

Для шифрования и дешифрования текста с помощью шифра Цезаря используется ключ - количество позиций, на которые нужно сдвинуть каждую букву в алфавите. Например, при ключе "3" буквы "АБВГ" заменятся на "ДЕЖЗ".

Программа на паскаль для шифра Цезаря

program CaesarCipher;
uses crt;
var
  text: string;
  key, shift: integer;
  c: char;

function Encrypt(text: string; key: integer): string;
var
  i: integer;
  c: char;
begin
  result := '';
  for i := 1 to length(text) do
  begin
    c := UpCase(text[i]);
    if (c >= 'A') and (c <= 'Z') then
    begin
      shift := (ord(c) - ord('A') + key) mod 26;
      c := chr(shift + ord('A'));
    end;
    result := result + c;
  end;
end;

function Decrypt(text: string; key: integer): string;
var
  i: integer;
  c: char;
begin
  result := '';
  for i := 1 to length(text) do
  begin
    c := UpCase(text[i]);
    if (c >= 'A') and (c <= 'Z') then
    begin
      shift := (ord(c) - ord('A') - key + 26) mod 26;
      c := chr(shift + ord('A'));
    end;
    result := result + c;
  end;
end;

begin
  clrscr;
  writeln('Enter text:');
  readln(text);
  writeln('Enter key:');
  readln(key);

  writeln('Encrypted text: ', Encrypt(text, key));
  writeln('Decrypted text: ', Decrypt(Encrypt(text, key), key));

  readln;
end.

В первую очередь мы начинаем программу с блока uses и используем системную библиотеку crt для очистки экрана. Затем мы объявляем переменные: text для текста, который нужно зашифровать и расшифровать; key для ключа шифрования и shift для подсчёта значения каждой буквы в алфавите.

Затем мы определяем две функции: Encrypt для шифрования текста и Decrypt для его расшифровки. Обе функции принимают текст и ключ в качестве параметров.

Функция Encrypt итерирует каждую букву в тексте и проверяет, существует ли она в алфавите. Если буква является буквой английского алфавита, то мы сдвигаем её значение на фиксированное количество позиций с помощью ключа и заменяем на соответствующую букву в алфавите шифра Цезаря.

Функция Decrypt выполняет обратную операцию, сдвигая каждую букву в обратную сторону на фиксированное количество позиций.

Затем мы запускаем программу, очищаем экран и запрашиваем от пользователя текст и ключ. После чего мы выводим зашифрованный и расшифрованный текст, используя функции Encrypt и Decrypt.

Заключение

Шифр Цезаря - это простой и эффективный метод шифрования, который используется уже несколько веков. В данной программе мы рассмотрели, как его можно реализовать с помощью подстановочных шифров на языке Pascal. Это хороший пример, чтобы понять, как работает шифрование с помощью подстановочных шифров и расширить свои знания в области криптографии.

© Copyright 2023 by DevOps. Built with ♥

Ответит на любые вопросы, напишет доклад, решит домашнее задание, можно просто поболтать :)

Абсолютно бесплатно и без рекламы.