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

Усовершенствование PHP-шифрования: использование констант и проверка целостности сообщений

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

Шифрование и дешифрование данных в Delphi: уроки из PHP

Современные требования к безопасности данных требуют использования надежных методов шифрования. Пример кода на PHP, представленный в контексте, демонстрирует использование констант для повышения читаемости и удобства поддержки кода, а также применение HMAC для проверки целостности сообщений. В этой статье мы рассмотрим, как применить подобные принципы в Delphi, используя Object Pascal.

Использование констант

В PHP пример кода использует константы для хранения алгоритмов шифрования и соли. Это хорошая практика, так как позволяет легко изменять параметры шифрования, не внося изменения в основной код функций. Приведем аналогичный пример на Delphi:

program EncryptionExample;

{$DEFINE ALGO_SECRET = 'SHA256'}
{$DEFINE ALGO_MSGAUTH = 'SHA256'}
{$DEFINE ALGO_SSL = 'AES-256-CBC'}
{$DEFINE SALT = 'Bedrock Hordes Staples'}

uses
  System.SysUtils,
  DCPsha,
  DCPcrypt;

function Encrypt(const PlainBytes, const SecretKey: string): string;
var
  Hash, HMAC, CipherBytes, IV: TBytes;
begin
  Hash := TSHA256.Create.Hash(SecretKey + SALT);
  IV := TDCPRandom.Generate(16);
  CipherBytes := TDCPEncryption.AES256CBC.Encrypt(PlainBytes, Hash, IV);
  HMAC := TSHA256.Create.HashHmac(CipherBytes + IV, Hash);
  Result := StringOfBytes(IV) + StringOfBytes(HMAC) + StringOfBytes(CipherBytes);
end;

function Decrypt(const AllBytes, const SecretKey: string): string;
var
  Hash, IV, HMAC, CipherBytes: TBytes;
begin
  Hash := TSHA256.Create.Hash(SecretKey + SALT);
  IV := StringToBytes(StringOfBytes(AllBytes, 16));
  HMAC := StringToBytes(StringOfBytes(AllBytes, 32));
  CipherBytes := StringToBytes(StringOfBytes(AllBytes, 64));
  if not TSHA256.Create.HashHmacEqual(CipherBytes + IV, TSHA256.Create.HashHmac(CipherBytes + IV, Hash)) then
    Exit('Payload is tampered/modified/corrupted.');
  Result := TDCPEncryption.AES256CBC.Decrypt(CipherBytes, Hash, IV);
end;

function StringOfBytes(const Bytes: TBytes): string;
begin
  Result := '';
  for var i := Low(Bytes) to High(Bytes) do
    Result := Result + Format('%02X', [Bytes[i]]);
end;

function StringToBytes(const Str: string): TBytes;
var
  i, Len: Integer;
begin
  SetLength(Result, Length(Str) div 2);
  Len := Length(Str);
  for i := 0 to Length(Result) - 1 do
    Result[i] := StrToByte(Str[i * 2 + 1 .. i * 2 + 2]);
end;

function StrToByte(const Str: string): Byte;
begin
  Result := StrToIntDef(Str, 0);
end;

begin
  // Пример использования функций
  var PlainText := 'Secret Message';
  var Encrypted := Encrypt(PlainText, 'MySecretKey');
  var Decrypted := Decrypt(Encrypted, 'MySecretKey');
  Writeln(Decrypted);
end.

Проверка целостности сообщений

HMAC (Hash-based Message Authentication Code) используется для проверки целостности сообщений. В Delphi мы также можем использовать HMAC для обеспечения безопасности данных. Пример кода выше включает проверку целостности в функции Decrypt.

Заключение

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

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

Приведены примеры кода для шифрования и дешифрования данных в Delphi, переносные из PHP, используя константы и HMAC для обеспечения безопасности и целостности передаваемых данных.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-03-14 10:29:27/0.010979890823364/0