Шифрование текстовых полей таблицы InterbaseDelphi , Базы данных , InterbaseШифрование текстовых полей таблицы Interbase
Автор: Vemer { **** 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
Помните обрабатывать ошибки и исключения правильно при реализации алгоритмов шифрования/дешифрования. Шифрование текстовых полей таблицы Interbase - функция, которая шифрует и дешифровывает текстовые строки для хранения в текстовом поле базы данных Interbase. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |