md5 строки: ясно. md5 file: ????????
каким образом производится месседж дайджест файла ???
Так что можно как от строки (как набора байт символов) хоть от файла.
Цитата: aks
Какая разница MD5 береться от набора байт любой длины.
Так что можно как от строки (как набора байт символов) хоть от файла.
Так что можно как от строки (как набора байт символов) хоть от файла.
так вот как это реализовать?
маппировать... короче, может есть у кого готовый алгоритм?
я не понимаю как создастся мд5, если считывать файл в буфер,
В общем случае файл загружается в память и ф-ии передается указатель на него.
Посмотри любую открытую реализацию MD5. Там все есть. Для MD5 нет разницы с чем работать, это просто функция отображающая множество всевозможных комбинаций байт в в множество 128-битных чисел грубо говоря. Алгоритм позволяет по ходу получения очередны данных дальше вычислять это число (хэш). Так что смотри код - он на самом деле небольшой. Ну или если юзаешь какую то либу, как сказал Zbyszek там почти наверняка есть возможность для подсчета хэша файла.
Если ни то, ни другое - бери готовые реализации, благо их в Интернете полно.
invoke GetOpenFileName, addr ofn
.if eax==TRUE
invoke CreateFile,ofn.lpstrFile,GENERIC_READ ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL
.IF eax==INVALID_HANDLE_VALUE
jmp error1
.ENDIF
mov hFileRead,eax
invoke GetFileSize, hFileRead, NULL
mov fsize,eax
invoke CreateFileMapping,hFileRead,NULL,PAGE_READONLY,0,0,NULL
.IF eax==NULL
jmp error2
.ENDIF
mov hFileMap,eax
invoke MapViewOfFile,hFileMap,FILE_MAP_READ,0,0,0
.IF eax==NULL
jmp error3
.ENDIF
mov hFileMapView,eax
invoke MD5Init
invoke MD5Update, hFileMapView, fsize
invoke MD5Final
invoke hex2ascii, eax, offset outbuffer, 10h
invoke CloseHandle,hFileRead
.elseif eax!=TRUE
invoke ExitProcess,0
.endif
В итоге файл размером 600 мег (*.iso) ВЕСЬ перелезает в оперативу...
Я так понимаю файл - очень длинная строка.
Так вот это ведь бред!... как сделать чтоб не так много места жрало ...
(если код корявый маякните) СПСБ
Можно отправлять файл в память по кускам. Как - смотри в теме CreateFileMapping - весь файл сразу маппирует?