SHA-256 vs SHA-512: którą funkcję skrótu wybrać?

SHA-256 i SHA-512 należą obie do rodziny SHA-2, zaprojektowanej przez NSA i ustandaryzowanej przez NIST. Produkują skrót o stałym rozmiarze z dowolnych danych i są dziś uważane za bezpieczne. Różnica tkwi w rozmiarze skrótu, wydajności zależnej od architektury oraz kilku szczegółach bezpieczeństwa. Oto którą wybrać i dlaczego.

Rodzina SHA-2

SHA-2 obejmuje kilka wariantów (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256), które dzielą tę samą strukturę, ale różnią się rozmiarem słów i skrótu. Liczba wskazuje rozmiar skrótu w bitach: SHA-256 produkuje 256 bitów (64 znaki szesnastkowe), SHA-512 produkuje 512 (128 znaków).

Możesz obliczyć te skróty naszym generatorem skrótów lub rozpoznać algorytm na podstawie skrótu za pomocą identyfikatora skrótów. Nie mylić z MD5, przestarzałym pod względem bezpieczeństwa (zobacz nasze porównanie MD5 vs SHA-256).

SHA-256

SHA-256 działa na słowach 32-bitowych i produkuje skrót 256-bitowy. To najbardziej rozpowszechniona funkcja skrótu na świecie: certyfikaty TLS, podpisy Bitcoina, weryfikacja integralności plików, git. Krótszy skrót czyni go praktycznym do przechowywania, wyświetlania i przesyłania.

  • Skrót: 256 bitów, 64 znaki szesnastkowe
  • Słowa: 32 bity, optymalne na platformach 32-bitowych i w systemach wbudowanych
  • Adopcja: najszersza, uniwersalne wsparcie

SHA-512

SHA-512 działa na słowach 64-bitowych i produkuje skrót 512-bitowy. Wbrew intuicji, na nowoczesnym procesorze 64-bitowym jest często szybszy niż SHA-256 dla dużych wolumenów, ponieważ przetwarza więcej danych na rundę. Dłuższy skrót oferuje także wyższy margines bezpieczeństwa.

  • Skrót: 512 bitów, 128 znaków szesnastkowych
  • Słowa: 64 bity, optymalne na architekturach 64-bitowych
  • Natywna odporność: SHA-512 nie jest podatny na atak length extension przy użyciu jego skróconych wariantów (SHA-512/256)

Tabela porównawcza

Kryterium SHA-256 SHA-512
Rozmiar skrótu256 bitów (64 hex)512 bitów (128 hex)
Rozmiar słów32 bity64 bity
Szybkość na CPU 64-bitDobraCzęsto wyższa
Szybkość na 32-bit / wbudowaneWyższaWolniejsza
Margines bezpieczeństwaBardzo wysokiJeszcze wyższy
Length extensionPodatnyPodatny (poza skróconymi wariantami)
AdopcjaUniwersalnaSzeroka

Wydajność

Wydajność zależy od architektury. Na serwerze lub laptopie 64-bitowym SHA-512 może przewyższać SHA-256 o 20 do 50% na dużych plikach, ponieważ przetwarza większe bloki na iterację. Na mikrokontrolerze 32-bitowym lub w środowisku ograniczonym SHA-256 odzyskuje przewagę.

W praktyce dla małych danych wejściowych (hasło, identyfikator) różnica jest pomijalna. Staje się mierzalna dopiero przy dużych wolumenach lub wysokich przepustowościach.

Kiedy wybrać jedną lub drugą

Wybierz SHA-256, gdy

  • Dążysz do maksymalnej kompatybilności i kompaktowego formatu
  • Celujesz w systemy wbudowane, IoT lub platformy 32-bitowe
  • Weryfikujesz integralność plików lub podpisujesz certyfikaty
  • Krótki skrót ułatwia wyświetlanie i przechowywanie

Wybierz SHA-512, gdy

  • Haszujesz duże wolumeny na serwerach 64-bitowych
  • Chcesz najszerszy możliwy margines bezpieczeństwa
  • Używasz SHA-512/256, aby oprzeć się atakowi length extension, zachowując 256 bitów

Ważne: żadna z dwóch nie jest odpowiednia do haszowania haseł. Do tego użyj bcrypt lub Argon2, zaprojektowanych tak, by były wolne i solone.

Zalecenie

Do ogólnego użytku SHA-256 jest wyborem domyślnym: uniwersalnie wspierany, kompaktowy, w pełni bezpieczny. Wybierz SHA-512, jeśli haszujesz duże wolumeny na sprzęcie 64-bitowym lub jeśli chcesz dodatkowy margines bezpieczeństwa. A do przechowywania haseł zwróć się ku dedykowanej funkcji takiej jak Argon2id, nigdy ku samemu SHA-2.

Najczęściej zadawane pytania

Czy SHA-512 jest bezpieczniejszy niż SHA-256?

SHA-512 oferuje wyższy teoretyczny margines bezpieczeństwa dzięki dłuższemu skrótowi, ale SHA-256 jest już daleko poza zasięgiem obecnych ataków. Dla niemal wszystkich zastosowań oba są uważane za bezpieczne.

Dlaczego SHA-512 może być szybszy niż SHA-256?

Ponieważ operuje na słowach 64-bitowych i przetwarza większe bloki na rundę. Na natywnym procesorze 64-bitowym kompensuje to dodatkowy koszt i często czyni go szybszym na dużych wolumenach. Na 32 bitach jest odwrotnie.

Czy mogę haszować hasła za pomocą SHA-256 lub SHA-512?

Nie, to byłby błąd. Te funkcje są szybkie, więc łatwe do zaatakowania metodą brute force. Użyj bcrypt lub Argon2id, które są celowo wolne i zawierają sól.

Czym jest SHA-512/256?

To SHA-512, którego skrót jest skrócony do 256 bitów, z innymi wartościami inicjalizującymi. Otrzymujesz skrót 256-bitowy, szybkość SHA-512 na 64 bitach i natywną odporność na atak length extension.