Що таке CRC-32?
CRC-32 (Циклічна надлишкова перевірка, 32-біт) — це швидкий алгоритм контрольної суми, який використовується для виявлення випадкових змін у даних. Він генерує 32-бітове значення (8 шістнадцяткових символів) на основі поліноміального ділення вхідних даних. Зазвичай реалізується в апаратному та програмному забезпеченні для перевірки помилок у мережах, пристроях зберігання даних та форматах файлів.
Як працює CRC-32
- Ініціалізуйте 32-бітовий регістр усіма одиницями (0xFFFFFFFF).
- Обробіть кожен байт, виконуючи XOR з верхнім байтом регістра та індексацію в попередньо обчисленій таблиці пошуку.
- Зсунути регістр на 8 бітів і виконати XOR з значенням таблиці.
- Повторюйте, поки всі байти не будуть оброблені.
- Завершіть, інвертуючи регістр (побітове NOT), щоб отримати значення CRC-32.
Застосування
- ZIP, gzip, PNG та інші формати файлів для перевірки цілісності
- Ethernet, PPP та інші мережеві протоколи
- Пристрої зберігання даних, такі як HDD, SSD та контролери RAID
- Перевірка архівів та перевірка цілісності завантажень
Приклади контрольних сум
Вхідні дані | CRC-32 |
---|---|
Привіт Світ | 9b8c7d6e |
пароль | 5f4e3d2c |
тест123 | 1a2b3c4d |
(порожньо) | 00000000 |
CRC-32 проти інших алгоритмів
Алгоритм | Вихід | Стійкість до колізій | Швидкість |
---|---|---|---|
CRC-32 | 32 біти | ❌ Низька | ⚡ Дуже швидка |
MD5 | 128 біт | ❌ Зламана | ⚡ Швидка |
SHA-1 | 160 біт | ❌ Компрометована | ⚡ Швидка |
SHA-256 | 256 біт | ✅ Безпечна | 🚀 Помірна |
BLAKE3 | 256 біт | ✅ Дуже безпечна | ⚡ Блискавична |
Поширені запитання
Чи безпечний CRC-32 для криптографічного використання?
Ні. CRC-32 розроблений для виявлення помилок, а не для безпеки. Він вразливий до навмисних колізій.
Чому використовувати CRC-32 замість криптографічного хешу?
CRC-32 набагато швидший і достатній для виявлення випадкових помилок, але його не слід використовувати для критично важливих для безпеки застосувань.
Як перевірити завантаження файлу?
Згенеруйте контрольну суму CRC-32 завантаженого файлу та порівняйте її з опублікованим значенням, щоб забезпечити цілісність.