уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

В одном из постов я рассматривал возможности работы с различными методами шифрования при использовании библиотек Synapse и Indy.  Сегодняшний пост можно считать логическим продолжением того самого поста. Сегодня мы вкратце познакомимся с возможностями шифрования данных средствами библиотеки ICS (Internet Component Suite).


В плане расположения методов шифрования в модулях библиотеки ICS лично мне очень напомнила библиотеку Indy — каждый из методов (MD4, MD5, Base64, SHA1) располагаются в своих модулях библиотеки.

Так как в ранних версиях ICS компоненты именовались несколько иначе, чем в 5-7 версиях, то сразу говорю — при написании этого поста я использую ICS 7.

Рассмотрение вопроса начнем как и в прошлый раз — с MD5.

MD5 в ICS.

Для работы с MD5 нам необходимо подключить в uses модуль OverbyteIcsMD5. Этот модуль содержит необходимые структуры и типы данных для работы с MD5 и позволяет получать дайджесты MD5 не только простой строки, как в Synapse, но и файлов. Для знакомства с возможностями модуля сначала получим MD5 строки. Для этого модуль содержит пару удобных функций:

function StrMD5(Buffer : String): String;
{$IFDEF COMPILER12_UP}
overload;
function StrMD5(Buffer : AnsiString): AnsiString; overload;
{$ENDIF}
Выполним, например, такой код:
begin
ShowMessage(StrMD5('Hello'))
end;
В итоге получим сообщение, содержащее строку вида:

8B1A9953C4611296A827ABF8C47804D7

В чем здесь отличие по сравнению с Synapse?  Те кто хоть раз использовал модуль Synacode.pas сразу обратят внимание, что в отличие от Synaps’овской функции MD5() функция StrMD5 сразу выдает дайджест MD5 в HEX-форме. И это обстоятельство достаточно удобно, например, если необходимо авторизоваться в том же Мегаплане (там передача пароля происходит в MD5).
Метод FileMD5() используется для получения MD5-дайджеста файла. При этом в ICS есть несколько реализаций этого метода каждый из которых имеет свою «фишку», например, можно задать позиции начала и конца фрагмента файла для получения MD5, использовать для процесса визуализации какой-либо объект и т.д.
Алгоритм Base64 в ICS
Для реализации Base64 в Delphi средствами ICS нам необходимо подключить в uses модуль OverbyteIcsMimeUtils. Для работы с Base64 можно воспользоваться следующими методами модуля:
function  Base64Encode(const Input : AnsiString) : AnsiString; overload;
....
Для шифрования в Base64.
И
function  Base64Decode(const Input : AnsiString) : AnsiString; overload;
...
для получения исходной строки.

Алгоритм HMAC в ICS

С этим алгоритмом шифрования мы не раз встречались при работе с API Twitter. Этот алгоритм используется в API Twitter для усиления алгоритма SHA-1.
Для того, чтобы воспользоваться SH-1 необходимо подключить в uses модуль OverbyteIcsSha1 и, для того, чтобы, например, зашифровать строк, используя HMAC-SHA1 можно воспользоваться следующими методами из модуля:
function  HMAC_SHA1_EX(const Data: AnsiString;   const Key : AnsiString ): AnsiString;
Этот метод очень похож на аналогичный из библиотеки Synapse — просто указываем входную строку и ключ для шифрования, на выходе — зашифрованная строка.
Если необходимо просто получить дайджест SH-1, то моно использовать метод:
function SHA1ofStr   ( const s: AnsiString): SHA1DigestString;
SHA1DigestString — это тот же AnsiString только длиной ровно в 20 символов.
Теперь, в случае необходимости использования алгоритмов шифрования в своих Delphi-программах мы можем воспользоваться возможностями трех библиотек:

Как говориться, на любой вкус и цвет.

Книжная полка

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
1 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
VG
VG
08/01/2011 16:42

Что-то мне подсказывает, что это всего лишь заглушки к OpenSSL.
А вообще, криптографию и на чистом WinApi не так сложно реализовывать.