Где я могу найти реализацию Murmur2 в Delphi для потоков хеширования?

Я ищу код Delphi для использования Murmur2 для хеширования файлового потока. Должна поддерживать как 32-битную, так и 64-битную версию.


person Daniel    schedule 26.12.2012    source источник


Ответы (1)


В другом вопросе о хешировании есть реализация. Он, безусловно, поддерживает 32-битный код. Я не могу комментировать, насколько легко он переходит на 64 бита.

person Rob Kennedy    schedule 26.12.2012
comment
Этот код имеет точно такое же значение для 64-битного компилятора. - person David Heffernan; 26.12.2012
comment
Спасибо, я видел это, но это для строки. Я не знаю, как перевести это в хеширование потока. - person Daniel; 26.12.2012
comment
@Daniel Попробуйте это: pastebin.com/68KEDDp4 Также стоит отметить, что AnsiString — не лучший тип данных. для хэш-алгоритма. Я бы сказал, что TBytes было бы лучше. Легко адаптировать алгоритм к этому. - person David Heffernan; 26.12.2012
comment
@DavidHeffernan: я получаю целочисленное переполнение, пытаясь использовать эту функцию в потоке. Я экспериментировал с изменением longword на int64 с той же ошибкой. - person Daniel; 26.12.2012
comment
Не делай этого! Очень плохая идея! Ни в коем случае не меняйте код. Просто отключите проверку целочисленного переполнения для этого кода. Поместите код has в отдельный блок и добавьте это прямо вверху этого блока: {$OVERFLOWCHECKS OFF} - person David Heffernan; 26.12.2012
comment
@Daniel Используйте модуль в этом pastebin, и все готово: pastebin.com/Bw5Sfih0 - person David Heffernan; 26.12.2012
comment
@DavidHeffernan, отлично работает, спасибо! Пожалуйста, опубликуйте это как официальный ответ, чтобы я мог его принять. - person Daniel; 26.12.2012
comment
Пожалуйста, примите ответ Роба. Если вы хотите включить мой код pastebin в качестве собственного ответа, пожалуйста, сделайте это. Но ответ Роба — это ответ, который вы должны принять. - person David Heffernan; 26.12.2012