Miklix

Калькулятор Хеш-Коду CRC-32C

Опубліковано: 17 лютого 2025 р. о 18:45:23 UTC

Калькулятор хеш-коду, який використовує хеш-функцію CRC-32C (Cyclic Redundancy Check 32 bit, варіант C) для обчислення хеш-коду на основі введення тексту або завантаження файлу.

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

CRC-32C Hash Code Calculator

Циклічна перевірка резервування (CRC) — це код виявлення помилок, який зазвичай використовується для виявлення випадкових змін у необроблених даних. Хоча технічно CRC-32 не є криптографічною хеш-функцією, її часто називають хешем через її здатність виробляти вихід фіксованого розміру (32 біти) з входу змінної довжини. Версія, представлена на цій сторінці, є варіантом CRC-32C, який є новішою, «розумнішою» (краще виявлення помилок) версією, яка часто має апаратне прискорення на сучасних процесорах (через SSE 4.2).

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


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

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

Вхідні дані:



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



Про алгоритм хешування CRC-32C

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

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

Спосіб, за допомогою якого CRC-32 це робить, складається з чотирьох етапів:

Крок 1: Додайте трохи додаткового простору (відступу)

  • CRC додає трохи додаткового місця в кінці повідомлення (наприклад, упаковка арахісу в коробку).
  • Це допомагає йому легше виявляти помилки.

Крок 2: Магічна лінійка (многочлен)

  • CRC-32 використовує спеціальну «магічну лінійку» для вимірювання даних.
    • Думайте про цю лінійку як про візерунок з нерівностей і борозенок (це многочлен, але не хвилюйтеся про це слово).
    • Найбільш поширеною «лінійкою» для CRC-32 є фіксований шаблон.

Крок 3: Ковзання лінійки (процес ділення)

  • Тепер CRC проводить лінійкою по повідомленню.
    • У кожному місці він перевіряє, чи збігаються нерівності та канавки.
    • Якщо вони не збігаються, CRC робить позначку (це робиться за допомогою простого XOR, наприклад, увімкнення або вимкнення перемикачів).
    • Він постійно ковзає і перевертає перемикачі, поки не дійде до кінця.

Крок 4: Кінцевий результат (контрольна сума)

  • Провівши лінійкою по всьому повідомленню, ви отримаєте невелике число (довжиною 32 біти), яке представляє вихідні дані.
    • Цей номер є своєрідним відбитком пальця для повідомлення.
    • Це контрольна сума CRC-32.

Версія, представлена на сторінці, є варіантом CRC-32C, який має бути кращим варіантом, особливо якщо ви використовуєте процесор із апаратним прискоренням (SSE 4.2 і новіші) і вам не потрібна сумісність з іншими варіантами.

У мене є калькулятори і для інших варіантів:

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

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

Про автора

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