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

Шифрование текстовых полей таблицы Interbase

Delphi , Базы данных , Interbase

Шифрование текстовых полей таблицы Interbase

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

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Шифрование текстовых полей таблицы Interbase

Простенько но шустро шифрует текстовую строку VarChar в текстовую
строку VarChar, пригодную для сохранения в текстовом поле базы Interbase.
НЕ ЗАТРАГИВАЕТ ПРОБЕЛЫ!
Метод генерации (в начале) и изменения ключа (в 2-местах!) в вашей программе
лучше изменить от исходного в сторону усложнения, но не трогать "And 127" в конце.
Для работы с Char возможно стоит добавить "Trim(S1);" в самое начало.

Зависимости: Windows, SysUtils, DB
Автор:       Vemer, Vemer@List.Ru, Петрозаводск
Copyright:   Vemer
Дата:        16 ноября 2003 г.
***************************************************** }

function Morf(S1: string; T: Boolean): string;
var
  LS: Byte; //длина строки
  KB: Byte; //ключ, байт
  I: Byte; //Счетчик
  B: Byte; //байт строки
  W: Smallint; //буфер для ключа
  S2: string; //результат
begin
  LS := Length(S1);
  S2 := '';
  KB := LS * LS; //-------Изменить/Усложнить!And 127 не трогать!
  if T = False then // Выбор между шифрованием и дешифрованием
  begin
    for I := 1 to LS do
    begin //шифрование
      B := Byte(S1[I]);
      if B > 32 then
      begin
        W := B + KB;
        if W > 255 then
          W := W - 223;
        B := W;
      end; //If
      S2 := S2 + Chr(B);
      KB := (KB + (I * 2)) and 127;
      //-(1) Изменить/Усложнить! And 127 не трогать!
    end; //For
  end
  else
  begin //дешифровка
    for I := 1 to LS do
    begin
      B := Byte(S1[I]);
      if B > 32 then
      begin
        W := B - KB;
        if W < 33 then
          W := W + 223;
        B := W;
      end; //If
      S2 := S2 + Chr(B);
      KB := (KB + (I * 2)) and 127;
      //---(2) Сделать как в (1)! And 127 не трогать!
    end; //For
  end; //Else

  Result := S2;
end;

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

// В вычисляемом поле для отображения текста в нормальном виде:
TableNewName.Value := Morf(TableName.Value, True);

// Для занесения в таблицу в зашифрованном виде например из Edit:
TableName.Value := Morf(Edit.Text, False);

Анализ кода и предложения по улучшению:

Описание функции Morf Функция Morf - это простой алгоритм шифрования/дешифрования, который принимает строку S1 и булев параметр T. Если T равен False, то функция шифрует строку; если T равен True, то функция дешифрует строку. Шифрование/дешифрование происходит за счет сдвига ASCII-значения каждого символа на величину, рассчитанную из длины входной строки и индекса символа.

Предложения по улучшению 1. Комментарии: Добавьте более подробные комментарии к функции, объясняющие ее цель, алгоритм шифрования/дешифрования и любые специальные требования или ограничения. 2. Обработка ошибок: Код не обрабатывает ошибки или исключения. Рекомендуется добавить блоки try-catch для обработки потенциальных ошибок, таких как недопустимый тип входных данных или значения за пределами диапазона. 3. Валидация входных данных: Код предполагает, что входная строка S1 является валидной. Добавьте проверки для валидации типа и длины входных данных, чтобы обеспечить правильную обработку. 4. Организация кода: Разбейте длинную функцию на более маленькие подфункции или процедуры, каждая из которых имеет конкретную ответственность. Это сделает код более читаемым и поддерживаемым. 5. Имена переменных: Используйте более описательные имена переменных для улучшения читаемости кода. Например, вместо LS используйте StringLength или InputLength. 6. Магические числа: Избегайте использования магических чисел, таких как 32 и 127, без объяснения. Рекомендуется определить константы для этих значений с meaningful names.

Альтернативное решение Более безопасный алгоритм шифрования будет полезен для замены простого сдвига байта, используемого в этом коде. Рекомендуется реализовать более надежный алгоритм шифрования,such as AES (Advanced Encryption Standard), который широко используется и считается безопасным.

Пример реализации шифрования AES с помощью Delphi

uses
  IdGlobal;

function EncryptAES(const InputString: string): string;
var
  AESKey: TIdBytes;
  CipherText: TStringStream;
begin
  // Generate a random AES key (you may want to store this securely)
  AESKey := TIdBytes.Create(Random(256), Random(256), Random(256));

  // Create a new instance of the AES cipher
  var Cipher := TIdAES256Cipher.Create(AESKey);

  // Initialize the cipher with the input string
  CipherText := TStringStream.Create(InputString);

  // Encrypt the input string using the AES cipher
  Cipher.Encrypt(CipherText, CipherText);

  // Return the encrypted string
  Result := CipherText.DataString;
end;

function DecryptAES(const InputString: string): string;
var
  AESKey: TIdBytes;
  CipherText: TStringStream;
begin
  // Generate a random AES key (you may want to store this securely)
  AESKey := TIdBytes.Create(Random(256), Random(256), Random(256));

  // Create a new instance of the AES cipher
  var Cipher := TIdAES256Cipher.Create(AESKey);

  // Initialize the cipher with the input string
  CipherText := TStringStream.Create(InputString);

  // Decrypt the input string using the AES cipher
  Cipher.Decrypt(CipherText, CipherText);

  // Return the decrypted string
  Result := CipherText.DataString;
end;

Помните обрабатывать ошибки и исключения правильно при реализации алгоритмов шифрования/дешифрования.

Шифрование текстовых полей таблицы Interbase - функция, которая шифрует и дешифровывает текстовые строки для хранения в текстовом поле базы данных Interbase.


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

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




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


:: Главная :: Interbase ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-02 20:30:47/0.0041458606719971/0