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

Пример шифрования текста

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

Пример шифрования текста


const
  csCryptFirst = 20;
  csCryptSecond = 230;
  csCryptHeader = 'Crypted';

type
  ECryptError = class(Exception);

function CryptString(Str:String):String;
var i,clen : Integer;
begin
  clen := Length(csCryptHeader);
  SetLength(Result, Length(Str)+clen);
  Move(csCryptHeader[1], Result[1], clen);
  For i := 1 to Length(Str) do
   begin
    if i mod 2 = 0 then
     Result[i+clen] := Chr(Ord(Str[i]) xor csCryptFirst)
    else
     Result[i+clen] := Chr(Ord(Str[i]) xor csCryptSecond);
   end;
end;

function UnCryptString(Str:String):String;
var i, clen : Integer;
begin
  clen := Length(csCryptHeader);
  SetLength(Result, Length(Str)-clen);
  if Copy(Str, 1, clen) < > csCryptHeader then
   raise ECryptError.Create('UnCryptString failed');

  For i := 1 to Length(Str)-clen do
   begin
    if (i) mod 2 = 0 then
     Result[i] := Chr(Ord(Str[i+clen]) xor csCryptFirst)
    else
     Result[i] := Chr(Ord(Str[i+clen]) xor csCryptSecond);
   end;
end;

Программный код на языке Delphi, демонстрирующий простую шифровку и расшифровку текста с помощью операции XOR.

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

Функция CryptString принимает строку в качестве входных данных, шифрует ее, заменяя каждый символ соответствующим символом из исходной строки, но с учетом позиции символа. Offset для каждого символа определяется значениями csCryptFirst и csCryptSecond, равными 20 и 230 соответственно.

Данная функция выполняет следующие действия:

  1. Устанавливает длину результата в виде длины входной строки, плюс длина заголовка шифрования (csCryptHeader).
  2. Копирует заголовок шифрования в начало результата.
  3. Итерируется по каждому символу в входной строке:
    • Если индекс четный (т.е., i mod 2 = 0), заменяет символ на результат XOR между оригинальным символом и csCryptFirst.
    • Если индекс нечетный, заменяет символ на результат XOR между оригинальным символом и csCryptSecond.

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

Функция UnCryptString принимает зашифрованную строку в качестве входных данных, расшифровывает ее, обратно выполняя процесс шифрования. Проверяет, если первый участок строки соответствует заголовку шифрования, и если нет, бросает пользовательский исключение ECryptError.

Данная функция выполняет следующие действия:

  1. Устанавливает длину результата в виде длины входной строки, минус длина заголовка шифрования.
  2. Если первый участок входной строки не соответствует заголовку шифрования, бросает исключение.
  3. Итерируется по каждому символу в зашифрованной строке:
    • Если индекс четный (т.е., i mod 2 = 0), заменяет символ на результат XOR между оригинальным символом и csCryptFirst.
    • Если индекс нечетный, заменяет символ на результат XOR между оригинальным символом и csCryptSecond.

Замечания

Код использует простую технику шифрования XOR, которая не рекомендуется для безопасной передачи данных из-за ее легко расшифровываемости. В практике вам нужно использовать болееadvanced алгоритмы шифрования, такие как AES или RSA.

Код также предполагает, что входная строка содержит только ASCII-символы (0-127). Если вам нужно поддерживать символы Unicode, вам придется модифицировать код соответствующим образом.

В целом, это хороший пример реализации простой шифровки и расшифровки в Delphi.

В статье описана реализация алгоритма шифрования текста с использованием XOR-операции и фиксированных ключей, а также приведен пример кода на языке Pascal для шифрования и дешифрования текста.


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

Получайте свежие новости и обновления по 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 03:05:18/0.027318954467773/1