Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MD5 и CryptoAPI [D7]


fog ©   (2008-08-31 22:39:00) 


procedure TForm1.Button1Click(Sender: TObject);
var hProv: hCryptProv;
   hHash: hCryptHash;
   MS: TMemoryStream;
   sl: cardinal;
   sig: array[0..63] of Byte;
begin
CryptAcquireContext(hProv, nil, nil, PROV_RSA_FULL, 0);
CryptCreateHash(hProv, CALG_MD5, 0, 0, hHash);
MS := TMemoryStream.Create;
MS.LoadFromFile('test.exe');
CryptHashData(hHash, MS.Memory, MS.Size, 0);
CryptSignHash(hHash, AT_SIGNATURE, nil, 0, nil, sl);
CryptSignHash(hHash, AT_SIGNATURE, nil, 0, @sig[0], sl);
if hHash <> 0 then CryptDestroyHash(hHash);
if hProv <> 0 then CryptReleaseContext(hProv, 0);
if MS <> nil then MS.Free;
end;


полученный результат (sig) не совпадает с полученным сторонним MD5 калькулятором (md5calc.exe).
размер файла test.exe - > 10 M.
где ошибка?


fog   (2008-09-01 16:15:00) [1]

И на том спасибо


Медвежонок Пятачок   (2008-09-01 12:10:00) [2]

Цикл поблочного чтения и в нем CryptHashData


Медвежонок Пятачок   (2008-09-01 12:09:00) [3]

Точно так же.


fog   (2008-09-01 12:08:00) [4]

Ошибку понял, а как быть с большими (типа образ DVD) файлами?


Медвежонок Пятачок   (2008-09-01 09:12:00) [5]

Ну и после CryptHashData нужно получить размер итогового хеша, распределить память под хеш и и затем получить само значение хеша: CryptGetHashParam


Медвежонок Пятачок   (2008-09-01 09:06:00) [6]

И накой здесь CryptSignHash , если нужно всего лишь md5?


Наверх

Титульная страница Поиск, карта сайта Написать письмо