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