SHA-256 срещу SHA-512: коя хеш функция да изберете?

SHA-256 и SHA-512 принадлежат и двете към семейството SHA-2, проектирано от NSA и стандартизирано от NIST. Те произвеждат отпечатък с фиксиран размер от произволни данни и днес се считат за сигурни. Разликата е в размера на отпечатъка, в производителността според архитектурата и в няколко детайла на сигурността. Ето коя да изберете и защо.

Семейството SHA-2

SHA-2 обединява няколко варианта (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256), които споделят една и съща структура, но се различават по размера на думите и на отпечатъка. Числото указва размера на отпечатъка в битове: SHA-256 произвежда 256 бита (64 шестнадесетични символа), SHA-512 произвежда 512 (128 символа).

Можете да изчислите тези отпечатъци с нашия генератор на хешове или да разпознаете алгоритъм по отпечатък с идентификатора на хешове. Да не се бърка с MD5, остарял за сигурността (вижте нашето сравнение MD5 срещу SHA-256).

SHA-256

SHA-256 работи с думи от 32 бита и произвежда отпечатък от 256 бита. Това е най-разпространената хеш функция в света: TLS сертификати, подписи на Bitcoin, проверка на целостта на файлове, git. По-краткият ѝ отпечатък я прави удобна за съхранение, показване и предаване.

  • Отпечатък: 256 бита, 64 шестнадесетични символа
  • Думи: 32 бита, оптимална на 32-битови платформи и вградени системи
  • Възприемане: най-широкото, универсална поддръжка

SHA-512

SHA-512 работи с думи от 64 бита и произвежда отпечатък от 512 бита. Противно на интуицията, на модерен 64-битов процесор тя често е по-бърза от SHA-256 за големи обеми, защото обработва повече данни на кръг. По-дългият ѝ отпечатък предлага и по-голям резерв за сигурност.

  • Отпечатък: 512 бита, 128 шестнадесетични символа
  • Думи: 64 бита, оптимална на 64-битови архитектури
  • Естествена устойчивост: SHA-512 не е уязвима на атаката с разширяване на дължината, когато се използват нейните съкратени варианти (SHA-512/256)

Сравнителна таблица

Критерий SHA-256 SHA-512
Размер на отпечатъка256 бита (64 hex)512 бита (128 hex)
Размер на думите32 бита64 бита
Скорост на 64-битов CPUДобраЧесто по-висока
Скорост на 32 бита / вградениПо-високаПо-бавна
Резерв за сигурностМного високОще по-висок
Разширяване на дължинатаУязвимаУязвима (освен съкратените варианти)
ВъзприеманеУниверсалноШироко

Производителност

Производителността зависи от архитектурата. На 64-битов сървър или лаптоп SHA-512 може да надмине SHA-256 с 20 до 50 % при големи файлове, защото обработва по-големи блокове на итерация. На 32-битов микроконтролер или в ограничена среда SHA-256 си връща предимството.

На практика за малки входове (парола, идентификатор) разликата е пренебрежима. Тя става измерима само при значителни обеми или високи скорости.

Кога да изберете едното или другото

Изберете SHA-256, когато

  • Целите максимална съвместимост и компактен формат
  • Насочвате се към вградени системи, IoT или 32-битови платформи
  • Проверявате целостта на файлове или подписвате сертификати
  • Кратък отпечатък улеснява показването и съхранението

Изберете SHA-512, когато

  • Хеширате големи обеми на 64-битови сървъри
  • Искате възможно най-широкия резерв за сигурност
  • Използвате SHA-512/256, за да устоите на разширяването на дължината, запазвайки 256 бита

Важно: нито една от двете не е подходяща за хеширане на пароли. За това използвайте bcrypt или Argon2, проектирани да са бавни и осолени.

Препоръка

За общо ползване SHA-256 е изборът по подразбиране: универсално поддържана, компактна, напълно сигурна. Изберете SHA-512, ако хеширате големи обеми на 64-битов хардуер или ако искате допълнителен резерв за сигурност. А за съхранение на пароли се обърнете към специализирана функция като Argon2id, никога само към SHA-2.

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

По-сигурна ли е SHA-512 от SHA-256?

SHA-512 предлага по-висок теоретичен резерв за сигурност благодарение на по-дългия си отпечатък, но SHA-256 вече е далеч извън обсега на текущите атаки. За почти всички приложения и двете се считат за сигурни.

Защо SHA-512 може да е по-бърза от SHA-256?

Защото манипулира думи от 64 бита и обработва по-големи блокове на кръг. На нативен 64-битов процесор това компенсира допълнителната цена и често я прави по-бърза при големи обеми. На 32 бита е обратното.

Мога ли да хеширам пароли със SHA-256 или SHA-512?

Не, това би било грешка. Тези функции са бързи, тоест лесни за атака чрез груба сила. Използвайте bcrypt или Argon2id, които са умишлено бавни и включват сол.

Какво е SHA-512/256?

Това е SHA-512, чийто отпечатък е съкратен до 256 бита, с различни начални стойности. Получавате отпечатък от 256 бита, скоростта на SHA-512 на 64 бита и естествена устойчивост на атаката с разширяване на дължината.