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

Выбор алгоритма и размера ключа AES в SynCrypto для Delphi 2009: руководство

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

Выбор алгоритма и размера ключа AES в SynCrypto для Delphi 2009

Введение

SynCrypto — это открытая библиотека для шифрования данных, включенная в пакет, доступный по ссылке synopse.info. В единицах библиотеки присутствуют комментарии, указывающие на различные версии алгоритма шифрования AES (Advanced Encryption Standard), включая версии на ассемблере и на Pascal, а также с различной длиной ключа (128, 192, 256 бит). Пользователи сталкиваются с вопросом, как выбрать между этими версиями, и как установить желаемую длину ключа.

Выбор версии алгоритма

В библиотеке SynCrypto используются разные версии алгоритма AES, оптимизированные для выполнения на ассемблере или написанные на Pascal. Выбор версии алгоритма происходит автоматически на этапе компиляции в зависимости от версии компилятора (Delphi 5 и выше, или FPC) и архитектуры процессора (Intel или ARM). Кроме того, в режиме выполнения, если используется процессор Intel, может быть обнаружено и использовано аппаратное ускорение AES-NI, или, для процессоров VIA, аппаратное ускорение Padlock.

Пример определения версий алгоритма в коде:

{$define AES_ROLLED} // Использовать ускоренную версию, которая работает быстрее, по крайней мере на моём AMD CPU
{$ifdef DELPHI5OROLDER}
  {$define AES_PASCAL} // Внутренний ассемблер Delphi 5 имеет ошибки
  {$define SHA3_PASCAL}
{$else}
  {$ifdef CPUINTEL} // Поддержка AES-NI для x86 и x64
    {$ifdef CPU64}
      {$ifdef HASAESNI}
        {$define USEAESNI}
        {$define USEAESNI64}
      {$else}
        {$define AES_PASCAL} // В Delphi XE2/XE3 нет инструкций AES-NI
      {$endif}
      {$define AESPASCAL_OR_CPU64}
    {$else}
      {$define USEAESNI}
      {$define USEAESNI32}
    {$endif}
  {$else}
    {$define AES_PASCAL} // Pascal версия для Delphi 7 = 57MB/s, ассемблер = 84MB/s
    {$define SHA3_PASCAL}
  {$endif CPUINTEL}
{$endif}

Выбор размера ключа

Для шифрования и дешифрования данных в SynCrypto используется класс TAESCFB с методом SimpleEncrypt. Существуют перегруженные версии этого метода, одна из которых использует фиксированный размер ключа в 256 бит (версия, которую вы использовали), а другая принимает параметр KeySize, который может быть установлен в значения 128, 192 или 256 бит.

class function TAESAbstract.SimpleEncrypt(const Input: RawByteString; const Key; KeySize: integer; Encrypt, IVAtBeginning: boolean): RawByteString;

Перед вызовом SimpleEncrypt необходимо преобразовать входной пароль в секретный ключ, используя, например, PBKDF2_HMAC_SHA256 с высоким числом итераций.

Пример использования PBKDF2_HMAC_SHA256 для генерации ключа

Для генерации 128-битного ключа используйте функцию PBKDF2_HMAC_SHA256, но возьмите только первые 128 бит результата. Это обеспечивает безопасность, и хотя это может повлиять на производительность, безопасность является приоритетом для предотвращения атак по подбору пароля.

Заключение

Выбор алгоритма и размера ключа AES в SynCrypto зависит от множества факторов, включая версию компилятора и архитектуру процессора. Автоматические определения в коде обеспечивают использование оптимальной версии алгоритма. Для безопасной работы с AES важно правильно генерировать ключи, используя надежные криптографические функции, такие как PBKDF2_HMAC_SHA256.

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

Выбор алгоритма и размера ключа AES в библиотеке SynCrypto для использования в среде разработки Delphi 2009.


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

Получайте свежие новости и обновления по 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 12:33:17/0.0015311241149902/0