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

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

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

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

Автор: Anatoly Podgoretsky
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Шифрование строки

Предназначена для простого шифрование строк и паролей, ключ 96 бит, шифрование
симметричное.

Зависимости: UBPFD.decrypt
Автор:       Anatoly Podgoretsky, anatoly@podgoretsky.com, Johvi
Copyright:   (c) Anatoly Podgoretsky, 1996
Дата:        26 апреля 2002 г.
***************************************************** }

const
  StartKey = 471; // Start default key
  MultKey = 62142; // Mult default key
  AddKey = 11719; // Add default key
  // обязательно смените ключи до использования

function Encrypt(const InString: string; StartKey, MultKey, AddKey: Integer):
  string;
var
  I: Byte;
  // Если поменять тип переменной I на Integer, то будет возможно
  // шифрование текста длиной более 255 символом - VID.
begin
  Result := '';
  for I := 1 to Length(InString) do
  begin
    Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));
    StartKey := (Byte(Result[I]) + StartKey) * MultKey + AddKey;
  end;
end;

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

if Encrypt(S, StartKey, MultKey, AddKey) <> OriginalPwd then
  ...
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Расшифровка строки

Предназначена для расшифровки строки, ранее зашифрованной фукцией UBPFD.Encrypt

Зависимости: UBPFD.Encrypt
Автор:       Anatoly Podgoretsky, anatoly@podgoretsky.com, Johvi
Copyright:   (c) Anatoly Podgoretsky, 1996
Дата:        26 апреля 2002 г.
***************************************************** }

const
  StartKey = 471; // Start default key
  MultKey = 62142; // Mult default key
  AddKey = 11719; // Add default key
  // обязательно смените ключи до использования

{$R-}
{$Q-}

function Decrypt(const InString: string; StartKey, MultKey, AddKey: Integer):
  string;
var
  I: Byte;
  // Если поменять тип переменной I на Integer, то будет возможно
  // шифрование текста длиной более 255 символом - VID.
begin
  Result := '';
  for I := 1 to Length(InString) do
  begin
    Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));
    StartKey := (Byte(InString[I]) + StartKey) * MultKey + AddKey;
  end;
end;
{$R+}
{$Q+}

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

S := 'Ваш старый пароль: <' + Decrypt(S, StartKey, MultKey, AddKey) + '>';

Код, предоставленный ниже, это простой алгоритм симметричного шифрования и дешифрования на языке Delphi. Он использует операцию XOR для шифрования входной строки и custom-ключевой алгоритм для дешифрования.

Шифрование Функция Encrypt принимает четыре параметра: InString (входная строка), StartKey, MultKey и AddKey. Эти ключи используются для генерации уникального ключа для каждого символа в входной строке.

Функция проходит по каждому символу в входной строке, выполняет операцию XOR между значением ASCII-символа и текущим StartKey (правый сдвиг на 8 бит), и добавляет результат к строке Result. Затем StartKey обновляется формулой (Byte(Result[I]) + StartKey) * MultKey + AddKey.

Дешифрование Функция Decrypt аналогична функции шифрования, но использует те же ключи в обратном порядке. Она также выполняет операцию XOR между каждым символом в входной строке и текущим StartKey (правый сдвиг на 8 бит), и добавляет результат к строке Result. Затем StartKey обновляется той же формулой, что и в функции шифрования.

Пример использования Пример кода демонстрирует использование функций Encrypt и Decrypt вместе. Он шифрует пароль с помощью функции Encrypt и хранит его в переменной S. Затем он дешифрует зашифрованный пароль с помощью функции Decrypt и отображает оригинальный пароль.

Безопасные concerns Хотя это шифрование простое, оно имеет некоторые безопасные concerns:

  1. Повторное использование ключей: Те же ключи используются для шифрования и дешифрования, что означает, что если злоумышленник получит зашифрованные данные, он может легко дешифровать их, обратившись к процессу.
  2. Слабое генерирование ключей: Значения StartKey, MultKey и AddKey являются фиксированными и могут быть предсказаны или легко угаданы злоумышленником.
  3. Отсутствие случайности: Алгоритм шифрования не использует никаких методов случайности, чтобы сделать его более сложным для злоумышленника.

Альтернативные решения Для более безопасного шифрования системы рекомендуется использовать установленные криптографические библиотеки, такие как OpenSSL или встроенная поддержка SSL/TLS в Delphi. Кроме того, рекомендуется использовать более robust-ключевые генераторы и методы управления ключами, такие как случайное генерирование ключей или использование публично-правовой криптографии (например, RSA).

Простое симметричное шифрование строк с использованием алгоритма UBPFD для защиты паролей и строк.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:23:09/0.0056948661804199/1