Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #72, ДЕКАБРЬ 2004 г.

Шифровка от Microsoft

Тихоноff Александр

Хакер, номер #072, стр. 072-108-5


rewrite(fFileOutput, 1);

{записываем в файл идентификатор алгоритма хэширования}

BlockWrite(fFileOutput, CALG_MD5, 4);

reset(fFileInput, 1);

dwSizeVol := FileSize(fFileInput);

{записываем размер подписываемых данных}

BlockWrite(fFileOutput, dwSizeVol, 4);

{пишем сами данные и вычисляем хэш}

while not eof(fFileInput) do

begin

BlockRead(fFileInput, buf, 512, dwSizeVol);

BlockWrite(fFileOutput, buf, dwSizeVol);

CryptHashData(hHashName, @buf, dwSizeVol, 0);

end;

CloseFile(fFileInput);

{выясняем размер подписи}

CryptSignHash(hHashName, AT_SIGNATURE, nil, 0, nil, @dwSizeVol);

{создаем подпись}

GetMem(signature, dwSizeVol);

CryptSignHash(hHashName, AT_SIGNATURE, nil, 0, signature, @dwSizeVol);

BlockWrite(fFileOutput, dwSizeVol, 4);

BlockWrite(fFileOutput, signature^, dwSizeVol);

CloseFile(fFileOutput);

end;

{уничтожаем хэш}

end;

Вот, в принципе, и все. Естественно, в статье нельзя разобрать все функции, однако для создания небольшого криптопроекта информации этой статьи вполне достаточно. Нет, мы не призываем тебя клонировать существующие проги-шифровщики за счет мегакорпорации! Мы просто хотим сказать, что почти для любой софтинки, начиная от текстового редактора и кончая тетрисом, такие функции будут нелишними. Текстовому редактору – чтобы шифровать важные письма, а тетрису – чтобы результат не подделывали :).

CD

На компакте ты можешь найти исходник маленькой проги, демонстрирующей возможности CryptoAPI.

Кроме того, там же лежит исходник порта WinCrypt.h для Дельфей.

WWW

Если твой диск сперли/погрызли мыши/не продали и т.д., то исходник примера проги можно утянуть с www.xakep.ru в Х-релизах или по адресу http://tikhonoff.sbn.bz/releases/capi.zip.

А по адресу ftp://delphi-jedi.org/api/CryptoAPI2.zip ты можешь выловить исходники порта хитрой библиотечки, использованной в статье.

Назад на стр. 072-108-4  Содержание