Форум: "Начинающим";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
ВнизКак расчитать MD5 - хеш самого себя (Приложения) Найти похожие ветки
← →
Ega23 © (2008-07-23 10:53) [40]
> Как подделывают CRC16/32
А ты его через RSA закрой, а юзеру - только публичный ключ выдавай. :)
← →
McSimm © (2008-07-23 11:23) [41]
> где Вы его собрались хранить?
мне тоже любопытно
← →
Ega23 © (2008-07-23 11:24) [42]
> > где Вы его собрались хранить?
>
> мне тоже любопытно
>
В ini-файле, где же ещё... :)))
← →
Anatoly Podgoretsky © (2008-07-23 11:40) [43]> User (23.07.2008 10:46:39) [39]
Страшилки оставь в покое, зачем пытаться ломать CRC когда проще откусить защиту. Кроме того кроме подделки CRC придется еще и длину подделывать, да и мало ли что еще. И я на 100% уверен, что поделка автора никому не интересна, кроме самого автора.
А откусывать защиту, что для CRC8, что MD5 одинакова. Был бы интерес.
← →
User (2008-07-23 12:08) [44]> Кроме того кроме подделки CRC придется еще и длину подделывать
- не обязательно, тк в файле (исполняемом) имеется уйма места, куда никакие указатели не ссылаются, к тому же имеется выравнивание секций и т.п. (для любителе ужастиков - данные материалы освещает http://www.wasm.ru и др. аналогичные), нолики заменяются на символы = CRC сошлась ...
> А откусывать защиту, что для CRC8, что MD5 одинакова - если CRC8 или MD5 хранить отдельно от файла - нечего будет кусать: проверил контрольную сумму, сравнил с оригиналом КС - делаешь выводы об идентичности ...
ЗЫ: полемика вышла за рамки постановки вопроса ;-)
← →
Dennis I. Komarov © (2008-07-23 12:16) [45]> [44] User (23.07.08 12:08)
Это вопрос вышел...
← →
Дима (2008-07-23 18:09) [46]
> Я скажу как вычислить md5 хешь файла, но сперва скажите
> где Вы его собрались хранить?
В ini-файле и храню и CRC32 тоже + (есть кое какие наметки) + соответствующая запись (Зашифрованная и в ini тоже) в Лог-файле! ИМХО- так соблаговолила моя душа :) Это все полемика, важна реализация не кривая а Корректная и правильная!
> Anatoly Podgoretsky © (23.07.08 11:40) [43]
> И я на 100% уверен, что поделка автора никому не интересна,
> кроме самого автора.
Огульно! 99% нет не нужна не кому, но всеже 1% за мной и пользователями а это хоть какой но аргумент!
← →
Медвежонок Пятачок © (2008-07-23 18:13) [47]импортировать 6 функций из advapi32 и хеш у тебя в кармане
← →
Дима (2008-07-23 18:16) [48]
> Медвежонок Пятачок © (23.07.08 18:13) [47]
А по подробнее?
← →
Медвежонок Пятачок © (2008-07-23 18:20) [49]А по подробнее?
А поможет?
function CryptAcquireContext ;external ADVAPI32 name "CryptAcquireContextA"
function CryptReleaseContext ;external ADVAPI32 name "CryptReleaseContext";
function CryptGetHashParam ;external ADVAPI32 name "CryptGetHashParam";
function CryptCreateHash ;external ADVAPI32 name "CryptCreateHash";
function CryptHashData ;external ADVAPI32 name "CryptHashData";
function CryptDestroyHash ;external ADVAPI32 name "CryptDestroyHash";
← →
Дима (2008-07-23 18:20) [50]
> User (23.07.08 10:15) [31]
Ее родную и применил. Не ту что в горячке привел в начальных постах!
← →
Дима (2008-07-23 18:31) [51]
> Медвежонок Пятачок © (23.07.08 18:20) [49]
>
> А поможет?
А по чему бы и нет? Что, все так безнадежно?
Я думаю Гуру ты или "Чайнег" - а тягу к самообразованию, еще не кто не отменял!
+ Спросить всегда не зазорно было, плохо тупить в гордом одиночестве и прожить пусто но как Гуру-одиночка. ИМХО!
← →
Медвежонок Пятачок © (2008-07-23 18:42) [52]Вот пример использования.
Только подставить id нужного алгоритма.
function CalculateHash(const AFileName : string; AlgID : Cardinal; var AData : Pointer; var ADataSize : Cardinal) : boolean;
var pBuff : Pointer; aBuffLen,ReadCount : Cardinal; fStream : TFileStream;
hProv : HCRYPTPROV; hHash : HCRYPTHASH;
begin
Result := False; pBuff := nil; fStream := nil;
if FileExists(AFileName) then
begin
if CryptAcquireContext(@hProv,nil,nil,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT) then
begin
if CryptCreateHash(hProv,AlgID,0,0,@hHash) then
try
fStream := TFileStream.Create(AFileName,fmOpenRead or fmShareDenyNone);
if fStream.Size >= BUFF_SIZE then aBuffLen := BUFF_SIZE else aBuffLen := fStream.Size;
GetMem(pBuff,aBuffLen);
repeat
ReadCount := Min(aBuffLen,fStream.Size - fStream.Position);
if ReadCount > 0 then
begin
fStream.ReadBuffer(pBuff^,ReadCount);
Result := CryptHashData(hHash,pBuff,ReadCount,0);
if not Result then Break;
end
else
Break;
until ReadCount <= 0;
if Result then
begin
if CryptGetHashParam(hHash,HP_HASHVAL,nil,@ADataSize,0) then
begin
GetMem(AData,ADataSize);
Result := CryptGetHashParam(hHash,HP_HASHVAL,AData,@ADataSize,0);
end;
end;
finally
if Assigned(pBuff) then FreeMem(pBuff,aBuffLen);
CryptDestroyHash(hHash);
CryptReleaseContext(hProv,0);
fStream.Free;
end;
end;
end;
end;
← →
Anatoly Podgoretsky © (2008-07-23 18:49) [53]> Дима (23.07.2008 18:09:46) [46]
Значит 99% за реализацию на CRC и 1 за MD5
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.008 c