Miklix

Fowler-Noll-Vo FNV1-32 Калькулятор Хеш-Коду

Опубліковано: 18 лютого 2025 р. о 00:16:10 UTC

Калькулятор хеш-коду, який використовує хеш-функцію Fowler-Noll-Vo 1 32 bit (FNV1-32) для обчислення хеш-коду на основі введення тексту або завантаження файлу.

Ця сторінка була перекладена з англійської мови машинним перекладом, щоб зробити її доступною для якомога більшої кількості людей. На жаль, машинний переклад ще не є досконалою технологією, тому можуть траплятися помилки. Якщо ви бажаєте, ви можете переглянути оригінальну англійську версію тут:

Fowler-Noll-Vo FNV1-32 Hash Code Calculator

32-бітна хеш-функція FNV-1 є частиною сімейства хеш-функцій Фаулера-Нолла-Во (FNV), призначених для швидкого хешування при збереженні хорошого розподілу хеш-значень. Він зазвичай використовується в таких програмах, як хеш-таблиці, контрольні суми та пошук даних. Він створює 32-бітний (4-байтовий) хеш-код, який часто представляється у вигляді 8-значного шістнадцяткового числа.

Повна інформація: я не писав конкретну реалізацію хеш-функції, яка використовується на цій сторінці. Це стандартна функція, що входить до складу мови програмування PHP. Я лише створив веб-інтерфейс, щоб зробити його загальнодоступним тут для зручності.


Обчислення нового хеш-коду

Дані, надіслані через цю форму, або файли, завантажені через неї, зберігатимуться на сервері лише стільки часу, скільки буде потрібно для генерації запитуваного хеш-коду. Вони будуть видалені безпосередньо перед тим, як результат буде повернутий у ваш браузер.

Вхідні дані:



Надісланий текст в кодуванні UTF-8. Оскільки хеш-функції працюють з двійковими даними, результат буде відрізнятися від того, якби текст був в іншому кодуванні. Якщо вам потрібно обчислити хеш тексту в конкретному кодуванні, вам слід завантажити файл.



Про 32-бітний хеш-алгоритм Fowler-Noll-Vo FNV-1

Я не математик, але спробую пояснити цю хеш-функцію, використовуючи аналогію, зрозумілу моїм колегам-нематематикам. Якщо ви віддаєте перевагу науково правильному, страшно-математичному поясненню, я впевнений, що ви зможете знайти це деінде ;-)

Для початку давайте подумаємо про алгоритм FNV-1 як про рецепт приготування особливого смузі. Кожен доданий інгредієнт (наприклад, фрукти, молоко або мед) представляє фрагмент даних, наприклад, літери, цифри або навіть цілий файл.

Тепер мета полягає в тому, щоб змішати ці інгредієнти дуже специфічним чином, щоб навіть найменша зміна в рецепті (наприклад, додавання однієї додаткової чорниці) зробила смак смузі зовсім іншим. Саме так працюють хеш-функції - вони створюють унікальний «смак» (або хеш-значення) для кожного унікального набору інгредієнтів (або вхідних даних).

Алгоритм FNV-1 робить це багатоетапним процесом:

Крок 1: Почніть з основи (Offset Basis)

Думайте про це, як про те, як ви наливаєте в блендер спеціальну основу для смузі. Ця основа завжди одна і та ж, які б інгредієнти ви не додавали. У ФНВ-1 це називається «зміщеним базисом» - просто химерне початкове число.

Крок 2: Додавайте інгредієнти один за одним (дані обробки)

Тепер ви починаєте додавати інгредієнти, по одному - скажімо, полуницю, потім банан, потім трохи меду. Кожен з них являє собою байт даних.

Крок 3: Змішайтеся з секретним множником (FNV Prime)

Після додавання кожного інгредієнта ви натискаєте кнопку змішування, але ось нюанс: блендер множить все на секретне «магічне число», яке називається простим числом FNV. Це допомагає дуже добре змішувати речі.

Крок 4: Додайте дещицю магії (операція XOR)

Перш ніж додати наступний інгредієнт, ви посипаєте трохи чарівного пилу (це операція XOR). Це схоже на зміну смаку несподіваним чином, гарантуючи, що навіть невеликі зміни матимуть велике значення.

Крок 5: Повторюйте до кінця

Ви продовжуєте змішувати та посипати магією після кожного нового інгредієнта, доки не обробите все.

Крок 6: Фінальний смузі (хеш-значення)

Коли ви закінчите, ви виливаєте смузі. Кінцевий смак (хеш-значення) є унікальним для цієї точної комбінації інгредієнтів. Якби ви додали хоча б одну додаткову чорницю, вона була б зовсім іншою на смак.

Представлена тут версія є оригінальною 32-бітною версією FNV-1. Також доступна покращена версія FNV-1a 32 біт: Fowler-Noll-Vo FNV1a-32 Калькулятор Хеш-Коду

Поділитися на BlueskyПоділіться на FacebookПоділіться на LinkedInПоділіться на TumblrПоділитися на XПоділіться на LinkedInЗакріпити на Pinterest

Міккель Банг Крістенсен

Про автора

Міккель Банг Крістенсен
Міккель - творець і власник сайту miklix.com. Він має понад 20 років досвіду роботи професійним програмістом/розробником програмного забезпечення і наразі працює на повну ставку у великій європейській ІТ-корпорації. У вільний від ведення блогу час він присвячує різноманітним інтересам, хобі та захопленням, що певною мірою відображається на різноманітності тем, які висвітлюються на цьому сайті.