Главная страница
Поиск по модели:
  
Пиобактериофаг комплексный инструкция по применению отзывы
Mobile intel express
Бек теро сасана 3 мая 2017 результат
 

Хэш функция delphi

В Delphi XE2 портировали функцию вычисления хеша по Дженкинсу модуль System. Мне же понадобилась версия для вычисления битного хеша. Но почему-то у меня не взлетела - вычисляет хэши странным образом: Прошу совета у знающих, где я мог ошибиться.

По хорошему вам надо объявить массив юинтов, заполнить его и передать в функцию тогда вместо k: PAUInt64 будет var Data: Публикуя ответ вы принимаете условия политики конфиденциальности и соглашение. Stack Overflow на русском Вопросы Метки Участники.

MD5-хэш средствами Delphi.

Чтобы изменить список, зарегистрируйтесь или войдите. Тур Начните с этой страницы, чтобы быстро ознакомиться с сайтом Справка Подробные ответы на любые возможные вопросы Мета Обсудить принципы работы и политику сайта О нас Узнать больше о компании Stack Overflow Бизнес Узнать больше о поиске разработчиков или рекламе на сайте.

Stack Overflow на русском — сайт вопросов и ответов для программистов. Это не займёт больше минуты: Вот как это работает: Любой может задать вопрос Любой может ответить Лучшие ответы получают голоса и поднимаются наверх. Хеш функция Дженкинса Задать вопрос.

Integer; Оригинал находится здесь. UInt64 ; inline; begin Dec a, b ; Dec a, c ; a: PUInt64 absolute pb; a, b, c, len: Inc c, pd[22] shl 56 ; Inc c, pd[21] shl 48 ; Inc c, pd[20] shl 40 ; Inc c, pd[19] shl 32 ; Inc c, pd[18] shl 24 ; Inc c, pd[17] shl 16 ; Inc c, pd[16] shl 8 ; Inc b, pd[15] shl 56 ; Inc b, pd[14] shl 48 ; Inc b, pd[13] shl 40 ; Inc b, pd[12] shl 32 ; Inc b, pd[11] shl 24 ; Inc b, pd[10] shl 16 ; Inc b, pd[ 8] ; 8: Inc a, pd[ 7] shl 56 ; 7: Inc a, pd[ 6] shl 48 ; 6: Inc a, pd[ 5] shl 40 ; 5: Inc a, pd[ 4] shl 32 ; 4: Inc a, pd[ 3] shl 24 ; 3: Inc a, pd[ 2] shl 16 ; 2: Inc a, pd[ 0] ; 0: TObject ; var MyMSG: Abyx 17k 5 35 На вход подается массив байтов.

Пока попробую вариант предложенный Sh4dow, но придется подумать о переобразовании массива байтов в массив UInt Для тех, кто хочет посмотреть как разработчики Delphi портировали битную версую, привожу ее исходный код: Я ответ обновил, пробуйте.

Там для делфи7, но работать должно. В итоге всех размышлении, решил-таки отказать от этой функции в пользу MaHash8v Хеш функция Дженкинса дает много кажется, хотя может это только у меня так коллизии. Ну 64 бита для хэша - вообще довольно мало, хотя для малых объемов данных мб и приемлемо. Нам надо, чтобы pb[20] было м интом в наших данных. Далее, увеличение значения указателя: UInt64 ; function BobJenkinsHash64 var pb: UInt64 ; begin Dec a, b ; Dec a, c ; a: UInt64; var a, b, c: Но, идея тут понятна.

В оригинале передается массив битных констант, по нему прыгают и делают битовые сдвиги их значений. Автор видимо передает его же, но в функции рассматривает как массив х битных значений. Отсюда и описываемые им симптомы.

Посмотрел исходник на Си. Передается ключ массив байт, рассматриваются как беззнаковые длиной length байт. Собственно его хэш и считаем.

Быстрая хэш функция

Однозначно, у автора использование pd[i] - ошибка. Надо брать pb[i] без знака присваивать его разрядной переменной целое без знака , его сдвигать и результат добавлять к вычисляемой сумме. Как описать это на Дельфи - не знаю. Ошибка была здесь вместо pb: PUInt64 absolute pb; pb: Похоже для битного хэща константа k д.

Кстати, просветите, что означает в Дельфи выражение типа pd[20] shl 40? Мы сдвигаем й элемент вправо на 40 битовых разрядов. В случае преобразования из байтовой переменной в int64 я это могу понять.

Но если сдвигать битное число - фигня какая-то получается. Нулевой младший самый правый? И что будет с битами левее го? Но в Си мы двигаем все биты числа.

Hash функция

Зарегистрируйтесь или войдите StackExchange. Отправить без регистрации Имя. Stack Overflow на русском лучше работает с включенным JavaScript. MathOverflow Mathematics Cross Validated stats Theoretical Computer Science Physics Chemistry Biology Computer Science Philosophy more Meta Stack Exchange Stack Apps Area 51 Stack Overflow Talent.



 
00795
В освоении новой техники Вы поступаете так:
изучаете инструкцию
просите кого-нибудь помочь
полагаетесь на интуицию
© 2015 — 2017 «intercom-it.ru» Документы на все случаи!