Шифровка от 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 ты можешь выловить исходники порта хитрой библиотечки, использованной в статье. |