пятница, 27 февраля 2015 г.

Расчет Md5 и Base64

Здравствуйте

На днях потребовалось реализовать алгоритм Md5 и Base64 на Delphi 7.
Примеров в инетах море, но я наткнулся на довольно интересный момент:
все требуемое уже имеется в Delphi (я использую версию 7, так что возможны различия с другими версиями)

Итак приступим:


Md5
Для возможности работы с алгоритмом md5 в пакете indy присутствует модуль IdHashMessageDigest (для поддержки необходимо добавить в секцию uses)
Открываем файл IdHashMessageDigest.pas - путь по умолчанию - c:\Program Files\Borland\Delphi7\Source\Indy
И вот что мы видим:

Implementation of the MD2, MD4 and MD5 Message-Digest Algorithm
  as specified in RFC 1319 (1115), 1320 (1186), 1321
 (See NOTE below for details of what is exactly implemented)

  Author: Pete Mee
  Port to Indy 8.1 Doychin Bondzhev (doychin@dsoft-bg.com)
  Copyright: (c) Chad Z. Hower and The Winshoes Working Group.

  NOTE:
  All MDx are ready and bug free.

Ну и собственно пример использования:

function md5(s: string): string;
begin
  Result := '';
  with TIdHashMessageDigest5.Create do
  try
    Result := AnsiLowerCase(AsHex(HashValue(s)));
  finally
    Free;
  end;
end;

Base64
Для кодирования\декодирования base64 имеется модуль - EncdDecd.pas (так же добавляется в uses)
Открываем файл и смотрим:
Имеются 4 функции:

procedure EncodeStream(Input, Output: TStream);
procedure DecodeStream(Input, Output: TStream);
function  EncodeString(const Input: string): string;
function  DecodeString(const Input: string): string;

Пример использования:
EncodeString ('yekarniybaby');



UPDATE 27/03/2015
(проверено в Delphi XE3)
Md5:

function md5(s: string): string;
begin
  Result := '';
  with TIdHashMessageDigest5.Create do
  try
    Result := HashStringAsHex(s)
  finally
    Free;
  end;
end;

Комментариев нет:

Отправить комментарий