Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

ROT13 в Delphi с кастомным алфавитом

Delphi , Синтаксис , Шифрование

В данной статье мы рассмотрим, как реализовать функции для основной ротации (ROT13) с кастомным алфавитом в Delphi. ROT13 — это простой метод шифрования текста, при котором каждый символ в тексте сдвигается на 13 позиций вперед или назад в алфавите. Мы создадим функции ROT13Encrypt и ROT13Decrypt, которые позволят зашифровать и расшифровать строки с использованием кастомного алфавита, содержащего латинские и кириллические буквы, цифры и специальные символы.

Почему ROT13?

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

Кастомный алфавит

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

const
  ALL_CHARACTERS_CONSTANT = '!#$%&()*+,-./:;<=>?@[\]^_`{|}~0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя';

Функция шифрования ROT13Encrypt

Теперь давайте создадим функцию ROT13Encrypt, которая принимает входную строку и возвращает зашифрованную строку. Мы будем использовать кастомный алфавит для шифрования символов.

function ROT13Encrypt(const Input: string): string;
var
  idx, newIdx: Integer;
  halfLength: Integer;
begin
  Result := '';
  halfLength := Length(ALL_CHARACTERS_CONSTANT) div 2;

  for var i := 1 to Length(Input) do
  begin
    idx := Pos(Input[i], ALL_CHARACTERS_CONSTANT);
    if idx > 0 then
    begin
      newIdx := ((idx - 1 + halfLength) mod Length(ALL_CHARACTERS_CONSTANT)) + 1;
      Result := Result + ALL_CHARACTERS_CONSTANT[newIdx];
    end
    else
      Result := Result + Input[i];
  end;
end;

Функция ROT13Encrypt работает следующим образом:

  1. Инициализирует пустую строку Result для хранения зашифрованного текста.
  2. Рассчитывает половину длины кастомного алфавита.
  3. Перебирает каждый символ во входной строке.
  4. Если символ присутствует в кастомном алфавите, находит его индекс и вычисляет новый индекс для зашифрованного символа, используя формулу (idx - 1 + halfLength) mod Length(ALL_CHARACTERS_CONSTANT) + 1. Затем добавляет зашифрованный символ в Result.
  5. Если символ не найден в кастомном алфавите, добавляет его в Result без изменений.

Функция расшифрования ROT13Decrypt

Функция расшифрования ROT13Decrypt для нашего кастомного алфавита такая же, как и функция шифрования ROT13Encrypt. Это связано с тем, что ROT13 — это самосбалансирующийся шифр, то есть расшифровка зашифрованного текста таким же способом дает исходный текст.

function ROT13Decrypt(const Input: string): string;
begin
  // ROT13 decryption is the same as encryption in this case
  Result := ROT13Encrypt(Input);
end;

Пример использования

Ниже приведен пример использования функций ROT13Encrypt и ROT13Decrypt:

var
  originalText, encryptedText, decryptedText: string;
begin
  originalText := 'Пример текста для ROT13 с кастомным алфавитом!';
  encryptedText := ROT13Encrypt(originalText);
  decryptedText := ROT13Decrypt(encryptedText);

  Writeln('Исходный текст: ', originalText);
  Writeln('Зашифрованный текст: ', encryptedText);
  Writeln('Расшифрованный текст: ', decryptedText);
end;

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

Альтернативные подходы

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

Заключение

В этой статье мы рассмотрели, как реализовать функции для основной ротации (ROT13) с кастомным алфавитом в Delphi. Мы создали функции ROT13Encrypt и ROT13Decrypt, которые позволяют зашифровать и расшифровать строки с использованием кастомного алфавита, содержащего латинские и кириллические буквы, цифры и специальные символы. Хотя ROT13 не обеспечивает высокую степень безопасности, он может быть полезен для обфускации строк в приложениях, где не требуется высокий уровень безопасности.

Не стесняйтесь экспериментировать с различными алфавитами и наборами символов, чтобы найти наиболее подходящее решение для ваших нужд. Удачи!

Создано по материалам из источника по ссылке.

Статья описывает реализацию функций шифрования и расшифрования с помощью метода ROT13 в Delphi с использованием кастомного алфавита, содержащего латинские и кириллические буквы, цифры и специальные символы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Шифрование ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-04 02:42:54/0.0057530403137207/0