Изчисляване на checksum на файл

изчислява контролна сума (checksum) на файл в MD5, SHA-1, SHA-256 или SHA-512. Идеално за проверка на интегритета на сваляне или откриване на промяна

Какво е контролна сума?

Контролната сума (понякога изписвана chksum) е уникален цифров отпечатък, изчислен от съдържанието на файл чрез алгоритъм за хеширане. Този пръстов отпечатък, или пръстов отпечатък, обикновено се представя от шестнадесетичен низ с фиксирана дължина.

Основното свойство на добрия алгоритъм за хеширане е лавинообразният ефект: всяка модификация на изходния файл, дори с един бит, произвежда коренно различна контролна сума. Два файла със строго идентично съдържание винаги произвеждат една и съща контролна сума, независимо от името на файла, датата на модификация или операционната система.

Контролната сума се използва главно за проверка на целостта на файл: ако локално преизчисленият отпечатък съответства на обявения от издателя, файлът е непокътнат. В противен случай той е бил променен, повреден при транспортиране или модифициран.

За какво всъщност се използва?

  • Проверете целостта на изтегляне: Linux ISO (Debian, Ubuntu, Fedora, Arch), Docker изображение, Windows инсталатор или архив с отворен код систематично публикува официална контролна сума. Преизчисляването му локално потвърждава, че файлът е пълен и непроменен.
  • Откриване на повреда при пренасяне: прекъснато изтегляне, дефектен дисков сектор, нестабилна RAM, неправилен мрежов кабел или копие на USB ключ могат да повредят байтове. Контролната сума веднага разкрива тези тихи грешки.
  • Пръстов отпечатък на подпис: потвърдете, че даден файл идва от очаквания автор, когато контролната сума се излъчва през защитен канал (HTTPS, GPG подпис). Това е механизмът зад хранилищата на Linux пакети и магазините за приложения.
  • Версии и кеширане: Git идентифицира всеки комит, петно и дърво с хеш SHA-1 (мигриране към SHA-256). CDN и уеб пакети (Webpack, Vite, esbuild) инжектират хеш в името на файла (app.4a8f2c.js), за да обезсилят автоматично кеша на браузъра при промяна.
  • Откриване на дублиране и премахване на дублиране: инкременталните архиви (Borg, Restic, rsync), файловите системи (ZFS) и съхранението на обекти идентифицират идентични блокове по техния хеш, за да съхраняват само едно копие.
  • Потвърждение на качване: клиентът изпраща очакваната контролна сума, сървърът я преизчислява при получаване. AWS S3, например, приема заглавка Content-MD5 или x-amz-checksum-sha256, за да отхвърли повредено качване.
  • Разузнаване на заплахите и антивирусна програма: VirusTotal и доставчиците на антивирусна програма индексират злонамерени файлове чрез техния хеш SHA-256, което позволява откриване без предаване на пълния двоичен файл.

Поддържани алгоритми и разлики

  • MD5 (128 бита, 32 шестнадесетични знака): бърз, широко разпространен, но криптографски повреден. MD5 колизиите могат да бъдат изчислени за няколко секунди на текущ хардуер от 2004 г. насам. Да се използва само за проверка на целостта без злонамерени цели (изтегляне срещу прекъсване на мрежата, локално архивиране). Забранено за всяка защитна функция, подпис или удостоверяване.
  • SHA-1 (160 бита, 40 шестнадесетични знака): отхвърлен за криптография след атаката SHAttered през 2017 г., която демонстрира действителен сблъсък между два отделни PDF файла. Git все още го използва по подразбиране, но мигрира към SHA-256. Не го използвайте повече за подписване или удостоверяване.
  • SHA-256 (256 бита, 64 шестнадесетични знака): модерен стандарт, член на семейството SHA-2. Основа на съвременните TLS сертификати, сигнатури на Linux пакети (apt, dnf, pacman), биткойни и официални проверки на целостта. По-бавно от MD5, но безопасно въз основа на текущите познания.
  • SHA-512 (512 бита, 128 шестнадесетични знака): 64-битов вариант на SHA-2. Обработва естествено 64-битови думи, което го прави понякога по-бърз от SHA-256 на 64-битов процесор. По-дълъг отпечатък, по-голяма граница на безопасност.
  • CRC32 (32 бита, 8 шестнадесетични знака): некриптографски, ултра бърз, проектиран специално за откриване на грешки при предаване. Използва се от Ethernet, ZIP, PNG, gzip. Не защитава срещу злонамерени намерения: атакуващ може тривиално да фалшифицира файл със същия CRC32 като друг. Подходящ за бързи хардуерни проверки, не за сигурност.

Случаи на употреба

  • Проверете Linux ISO: Debian, Ubuntu, Fedora и Arch публикуват SHA-256 и SHA-512 на всеки официален образ, често преподписан в GPG.
  • Проверка на подписан двоичен файл: потвърдете, че изпълним файл, изтеглен от огледало, не е заменен от измамена версия.
  • Сравнете две версии: преди и след модификация, идентична контролна сума доказва идентичността малко по малко, без да се налага да разпространявате файловете.
  • Проверка на качване: клиентът изпраща контролна сума, сървърът я преизчислява при получаване, за да потвърди липсата на повреда.
  • Снемане на пръстови отпечатъци: откриване на ботове или известни файлове в бази данни с пръстови отпечатъци (антивирусна програма, разузнаване на заплахи, търсене на дублиращи се данни).

Как да го използвате

  1. Плъзнете и пуснете файла в предоставената област или използвайте бутона за избор.
  2. Изберете алгоритъма: MD5, SHA-1, SHA-256, SHA-512 или CRC32.
  3. Показва се контролната сума, готова за копиране.
  4. Сравнете получената стойност с референтната стойност (публикувана от издателя или съхранявана локално).

Изчислението се извършва локално във вашия браузър, без да се изпраща файлът до отдалечен сървър. Съдържанието остава поверително.

Как да проверя изтегляне с контролна сума?

Стандартната процедура за проверка е следната:

  1. Официалният сайт публикува очакваната контролна сума, например d41d8cd98f00b204e9800998ecf8427e за MD5 или низ от 64 знака за SHA-256.
  2. Изтеглете файла.
  3. Изчислете неговата контролна сума или с този инструмент, или от командния ред.
  4. Сравнение: ако двата низа са абсолютно идентични, символ по знак, файлът е непокътнат. Ако се различават дори с един знак, файлът е повреден или манипулиран: не го използвайте, изтеглете го отново.

От командния ред под Linux:

<предварителен # Изчислете контролната сума md5sum файл.iso sha1sum файл.iso sha256sum файл.iso sha512sum файл.iso cksum файл.iso # CRC32 + размер # Автоматична проверка от .sha256 файл, публикуван от редактора sha256sum -c файл.iso.sha256 # Показва: "file.iso: OK", ако контролната сума съвпада

Под macOS:

<предварителен md5 файл.iso shasum -a 1.iso файл shasum -a 256 файл.iso shasum -a 512 файл.iso # Проверка от референтен файл shasum -a 256 -c file.iso.sha256

Под Windows (PowerShell):

<предварителен Get-FileHash file.iso -алгоритъм MD5 Get-FileHash file.iso -алгоритъм SHA1 Get-FileHash file.iso -алгоритъм SHA256 Get-FileHash file.iso -алгоритъм SHA512 # Сравнете с очаквана стойност (Get-FileHash file.iso -алгоритъм SHA256).Hash -eq "ABC123..."

Бързо сравнение на алгоритъма

Алгоритъм Размер Скорост Препоръчителна употреба
CRC32 32-битов Много бързо Откриване на грешка в мрежата или хранилището, некриптографско
MD5 128 бита Бързо Само невраждебна цялост, трябва да се избягва при сигурност
SHA-1 160 бита Бързо Остаряла, стара съвместимост (Git, стари пакети)
SHA-256 256 бита Умерено Текущ стандарт, проверка на целостта и подписи
SHA-512 512 бита Бързо в 64 бита Проверка на целостта, по-висок марж на безопасност

ЧЗВ

MD5 или SHA-256 за проверка на моя ISO?

SHA-256 по подразбиране. Почти всички съвременни Linux дистрибуции пускат SHA-256 и SHA-512, понякога заедно с MD5 за историческа съвместимост. Ако издателят пуска само MD5 и се притеснявате за компрометиране, изискайте SHA-256 или проверете GPG подписа на файла с контролни суми. Ако просто се притеснявате от повреда при изтегляне, MD5 е технически достатъчен.

Контролната сума гарантира ли сигурността на моя файл?

Не, не само на него. Контролната сума доказва целостта, а не автентичността. Ако нападател контролира сървъра за изтегляне, той може да публикува модифициран файл и неговата модифицирана контролна сума. Истинската сигурност идва от цифров подпис (GPG, подписване на код), който свързва контролната сума с известен частен ключ. Винаги извличайте контролната сума чрез HTTPS или, по-добре, чрез проверяем GPG подпис.

Моята контролна сума не съвпада, какво трябва да направя?

Първо се уверете, че сравнявате правилния алгоритъм: SHA-256 не може да съответства на SHA-1. След това започнете изтеглянето отново, в идеалния случай от друго огледало: най-честата причина е прекъсване на мрежата. Ако несъответствието продължава след няколко опита, подозирайте компрометиране на огледалото: върнете се към официалния източник и проверете GPG подписа, ако съществува. Никога не стартирайте и не използвайте файла, докато контролната сума не съвпадне.

Защо MD5 е отхвърлен?

MD5 страда от практически сблъсъци: възможно е да се конструират два различни файла с абсолютно същия MD5 хеш за няколко секунди. Това свойство нарушава самата функция на криптографския хеш. По-конкретно, нападателят може да създаде злонамерен двоичен файл със същия MD5 като легитимен двоичен файл. SHA-1 страда от същия проблем от 2017 г. (SHAttered атака). Само SHA-256, SHA-512 и техните варианти остават считани за сигурни през 2026 г.

Разлика между хеш и контролна сума?

Хешът е общ резултат от хеш функция. Контролната сума е хеш, използван специално за проверка на целостта на данните. Всички контролни суми са хешове, но не всички хешове са контролни суми: хеш на парола (bcrypt, argon2) се използва за удостоверяване, хеш в хеш таблица се използва за бързо индексиране. Терминът пръстов отпечатък или пръстов отпечатък е общ синоним на контролна сума.

CRC32 достатъчен ли е за нуждите ми?

CRC32 е достатъчен, ако искате само да откриете случайна повреда на невраждебен канал: вътрешно мрежово прехвърляне, проверка на ZIP архив, проверка на последователност на паметта. Само с 32 бита два произволни файла имат около 1 към 4 милиарда шанс случайно да имат същия CRC32, което е достатъчно за откриване на грешки. CRC32 е недостатъчен щом нападателят може да повлияе на съдържанието: тривиално е да се фалшифицира файл с цел CRC32. За всяка проверка срещу злонамерен риск използвайте SHA-256.

Защо контролната ми сума се различава в зависимост от операционната система?

Контролната сума на едно и също двоично съдържание е идентична навсякъде. Ако получите два различни резултата, файлът всъщност се различава: краища на редове (Windows CRLF срещу Unix LF) след FTP трансфер в текстов режим, кодиране на текст, променено при отваряне, метаданни, добавени от системата (резолюция на macOS Spotlight, разширени атрибути) или безшумна рекомпресия от клиент за прехвърляне. Винаги прехвърляйте в двоичен режим.

Контролна сума или цифров подпис?

Контролната сума доказва, че даден файл не е бил променен между публикуването и получаването, при условие че контролната сума е извлечена през защитен канал. Цифровият подпис (GPG, PGP, код за подписване Authenticode) също доказва самоличността на автора с помощта на частен ключ. Подписът обхваща и подсилва контролната сума: стандартната практика в Debian, Tor или Bitcoin Core е да се подпише файлът с контролни суми в GPG, след което да се използват тези контролни суми за проверка на двоичните файлове.

Често задавани въпроси

Файлът изпраща ли се до сървър за изчисляване на контролната сума?

Не. Изчислението се извършва изцяло във вашия браузър, като се използва Web Crypto API и локални JavaScript процедури. Съдържанието на файла не напуска вашата машина, което позволява поверително хеширане на чувствителни документи, криптирани архиви или дъмпове на база данни. Този подход също така гарантира стабилна производителност, независимо от честотната лента.

Какъв размер на файла мога да хеширам с този инструмент?

Изчислението се извършва стрийминг на блокове, така че лимитът основно зависи от паметта и времето, което вашият браузър може да отдели за операцията. Няколкостотин мегабайта преминават без затруднения на стандартен компютър. За файлове от няколко гигабайта (пълен ISO, голям дъмп) предпочитайте системния команден ред (sha256sum, Get-FileHash), който използва по-добре ресурсите на диска и процесора.

Каква е разликата между хеширане на файл и хеширане на текст?

Алгоритъмът е абсолютно същият, променя се само входът. За текст хешираме последователността от байтове на низа в дадено кодиране (обикновено UTF-8). За файл ние хешираме необработеното двоично съдържание, байт по байт, включително всички вградени заглавки или метаданни. Ето защо текстов файл и неговото съдържание, копирано във формуляр, могат да дадат различни контролни суми (BOM, краища на редове, кодиране).

Защо контролната сума на ZIP архив варира при всяко създаване?

Повечето архиватори (ZIP, TAR.GZ, 7z) съхраняват променливи метаданни като дата на създаване, ред на файловете или индикатори за компресия. Следователно повторното създаване на архив със същото съдържание създава различен двоичен файл и различна контролна сума. За да получите възпроизводими архиви, използвайте инструменти като diffoscope, strip-nondeterminism или опциите --mtime и --sort=name на tar.

Има ли по-бързи алтернативи на SHA-256 за проверка на целостта?

да BLAKE2 и BLAKE3 са модерни криптографски хеш функции, проектирани да бъдат по-бързи от SHA-256, като същевременно осигуряват еквивалентно или по-високо ниво на сигурност. BLAKE3 използва особено добре SIMD и многоядрения паралелизъм, което го прави много ефективен при големи файлове. За чисто невраждебно откриване на грешки xxHash е ненадминат по скорост, но остава некриптографски.

Мога ли да сравня два файла, без да изчислявам целия им хеш?

За два локални файла директното двоично сравнение (cmp в Unix, fc /b в Windows) е по-бързо от хеширането и на двата. Хешът става полезен, когато файловете не са на една и съща машина или когато искате да запазите кратък отпечатък, без да запазите оригинала. За чести проверки на големи обеми, индексирайте хешовете в база данни и сравнявайте пръстови отпечатъци, а не цели файлове.

Пример за заявка

curl -X POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute \
  -F "file=@/path/to/file" \
  -F "algorithm=adler32"

Входна схема

Поле Тип Задължително По подразбиране
file file
algorithm choice (adler32, crc32, crc32b, crc32c, fnv132, fnv164, fnv1a32, fnv1a64, gost, gost-crypto, haval128,3, haval128,4, haval128,5, haval160,3, haval160,4, haval160,5, haval192,3, haval192,4, haval192,5, haval224,3, haval224,4, haval224,5, haval256,3, haval256,4, haval256,5, joaat, md2, md4, md5, murmur3a, murmur3c, murmur3f, ripemd128, ripemd160, ripemd256, ripemd320, sha1, sha224, sha256, sha3-224, sha3-256, sha3-384, sha3-512, sha384, sha512, sha512/224, sha512/256, snefru, snefru256, tiger128,3, tiger128,4, tiger160,3, tiger160,4, tiger192,3, tiger192,4, whirlpool, xxh128, xxh3, xxh32, xxh64)

този инструмент очаква файл - използвайте Content-Type multipart/form-data вместо application/json

Крайни точки

  • GET https://cdrn.fr/api/v1/tools - изброява всички достъпни инструменти
  • GET https://cdrn.fr/api/v1/tools/hash-file-generator - извлича схемата на този инструмент
  • POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute - изпълнява този инструмент с JSON payload