Skip to content

Generator SHA-3 hash (Keccak SHA3-256)

Generuj hashe SHA-3 online za darmo. Konstrukcja gąbki NIST FIPS 202 — standard po SHA-2. Wyjście SHA3-256 w 64 znakach hex. Tylko przeglądarka przez lazy-loaded js-sha3; zero przesyłania.

Bez śledzenia Działa w przeglądarce Bezpłatne
Hashowanie SHA-3 działa w przeglądarce przez bibliotekę js-sha3. Żadne dane nie są przesyłane na serwer.
Algorytm
Zweryfikowano poprawność SHA3-256 względem wektorów testowych NIST FIPS 202 CAVP; różnica wypełnienia Keccak vs SHA-3 zweryfikowana — Zespół inżynierski Go Tools · May 28, 2026

Czym jest SHA-3?

SHA-3 (Secure Hash Algorithm 3) to trzecia generacja standardu Secure Hash Standard NIST, wystandaryzowana w FIPS 202 w sierpniu 2015 roku. W odróżnieniu od SHA-1 i SHA-2, które opierają się na konstrukcji Merkle-Damgård, SHA-3 używa radykalnie innego projektu zwanego konstrukcją gąbki — wybór dokonany przez NIST celowo, aby zapewnić, że kryptanalityczne złamanie SHA-2 nie skompromitowałoby automatycznie SHA-3.

Konkurs NIST SHA-3 (2007–2012): NIST solicytował publiczne zgłoszenia na całym świecie w 2007 roku. Po trzech rundach oceny 64 kandydatów zostało zawężonych do pięciu finalistów: BLAKE, Grøstl, JH, Keccak i Skein. W październiku 2012 roku Keccak — zaprojektowany przez Guido Bertoni, Joan Daemen, Michaëla Peetsa i Gillesa Van Assche'a ze STMicroelectronics i NXP Semiconductors — został wybrany zwycięzcą. Wszyscy pięciu finalistów uznano za bezpiecznych; unikalny projekt oparty na gąbce Keccak dał mu strukturalną różnorodność, którą NIST priorytetyzował.

Konstrukcja gąbki: SHA-3 pochłania dane wejściowe do stanu 1600-bitowego (permutacja Keccak-f[1600]) w fazie pochłaniania, a następnie wyciska bity wyjściowe ze stanu w fazie wyciskania. Dla SHA3-256 podział tempa/pojemności wynosi 1088/512 bitów. Ponieważ w wyjściu pojawiają się tylko 256 z 1600 bitów stanu wewnętrznego, atakujący nie może odtworzyć pełnego stanu z hasha — czyniąc ataki rozszerzenia długości strukturalnie niemożliwymi. Kontrastuje to z SHA-256, gdzie pełny stan wewnętrzny jest ujawniony w wyjściu, wymagając HMAC, aby zapobiec rozszerzeniu długości.

SHA-3 vs Keccak — różnica wypełnienia: NIST zmodyfikował oryginalne zgłoszenie Keccak, zmieniając bajt separacji domeny z 0x01 na 0x06. Oznacza to, że NIST SHA3-256 i oryginalny Keccak-256 produkują różne 64-znakowe wyjścia hex dla każdego wejścia. Nie jest to kwestia teoretyczna — właśnie dlatego keccak256 Ethereum (zamrożony przed finalizacją FIPS 202) różni się od wyjścia SHA3-256 tego narzędzia dla tego samego ciągu. Nigdy nie używaj tego narzędzia do replikowania wyprowadzania adresu Ethereum.

FIPS 202 definiuje cztery warianty SHA-3: SHA3-224 (56 znaków hex), SHA3-256 (64 znaki hex), SHA3-384 (96 znaków hex), SHA3-512 (128 znaków hex). Narzędzie implementuje SHA3-256, najczęstszy wariant i ten, który jest najbardziej bezpośrednio porównywalny z SHA-256.

Uwaga dotycząca biblioteki: SHA-3 nie jest jeszcze w specyfikacji Web Crypto API przeglądarki (crypto.subtle obsługuje tylko SHA-1, SHA-256, SHA-384, SHA-512). Narzędzie lazy-ładuje bibliotekę JavaScript js-sha3 (~10 KB skompresowane gzip) przy pierwszym użyciu. Po tym jednorazowym pobraniu całe obliczenie działa lokalnie w przeglądarce — żadne dane wejściowe nie są nigdy przesyłane.

Kiedy używać SHA-3: nowe protokoły wymagające strukturalnej różnorodności od SHA-2; MAC oparte na kluczu bez owijacza HMAC (KMAC128/256 według NIST SP 800-185); zabezpieczenie postkwantowe jako backup SHA-2; zgodność z systemami nakazującymi FIPS 202. Kiedy pozostać przy SHA-256: powszechna obsługa bibliotek, akceleracja sprzętowa (rozszerzenia SHA-NI), istniejąca kompatybilność protokołów i większość codziennych przypadków użycia integralności, gdzie SHA-256 jest już ustanowionym standardem.

// SHA-3 (NIST FIPS 202 SHA3-256) using js-sha3 library
import { sha3_256 } from 'js-sha3';

const hash = sha3_256('Hello, World!');
// → '882f4b6991a775295186a4e3cc5ece9fc0b618c8c3e7a7beafdd0f56f13ae43b'

// Note: this differs from Ethereum's keccak256 for the same input:
// keccak256('Hello, World!') = 'acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f'
// The difference is the padding byte: 0x06 (SHA-3) vs 0x01 (original Keccak)

Przykłady SHA-3

Weryfikacja wektora testowego NIST FIPS 202

abc
3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532

SHA3-256("abc") = 3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532 — to oficjalny wektor testowy NIST FIPS 202. Wklej „abc” do narzędzia i potwierdź to dokładne wyjście, aby zweryfikować, że obliczasz NIST SHA-3 (nie oryginalny Keccak). Ten pojedynczy test odróżnia implementację SHA-3 zgodną z FIPS od implementacji używającej starszego bajtu wypełniającego Keccak.

Różnica między Keccak a SHA-3 — te same dane wejściowe, inne wyjście

Hello

SHA3-256("Hello") z tego narzędzia (NIST FIPS 202) = 8ca66ee6b2fe4bb928a8e3cd2f508de4119c0895f22df86f0ab7e30e487e4500. Ethereum keccak256("Hello") = 06b3dfaec148fb1bb2b066f10ec285e7c9bf402ab32aa78a5d38e34566810cd2. Te same dane wejściowe, różne 64-znakowe wyjścia hex. Różnica to sufiks wypełniający: NIST SHA-3 używa 0x06, a oryginalny Keccak (co Ethereum zamroziło w 2013 roku) używa 0x01. Ethereum poprzedza standaryzację NIST z 2015 roku i trwale rozgałęziło się od wariantu FIPS 202.

Hash archiwalny postkwantowy

NIST SP 800-57 Part 1 Rev 5 — Recommendation for Key Management

SHA3-256 zapewnia 128-bitową odporność na pre-image przeciwko algorytmowi Grovera na komputerze kwantowym — ten sam skuteczny poziom bezpieczeństwa co SHA-256 przeciwko atakowi kwantowemu. Dla danych, które muszą pozostać odporne na manipulacje poza 2050 rokiem, używanie SHA-3 obok SHA-256 zapewnia głębię obrony: jeśli złamanie zostanie znalezione w konstrukcji jednego algorytmu (Merkle-Damgård dla SHA-2; gąbka Keccak dla SHA-3), drugi pozostaje bezpieczny. Instytucjonalne archiwa i dokumenty rządowe coraz częściej używają manifestów z podwójnym hashowaniem (SHA-256 + SHA3-256) jako zabezpieczenia. Patrz też Generator SHA-256 dla strony SHA-2 tego zabezpieczenia.

Uwierzytelnianie klucza HMAC-SHA3-256

POST /api/ledger
{"amount":250000,"from":"acct-A","to":"acct-B"}

HMAC-SHA3-256 to nowoczesna alternatywa dla HMAC-SHA-256 do uwierzytelniania wiadomości opartego na kluczu. Ponieważ konstrukcja gąbki SHA-3 jest natywnie odporna na ataki rozszerzenia długości (faza wyciskania odrzuca stan wewnętrzny), zwykły MAC SHA3-256 oparty na kluczu (KMAC, zdefiniowany w NIST SP 800-185) jest również bezpieczny — w odróżnieniu od surowego SHA-256, który wymaga owijania HMAC w celu obrony przed rozszerzeniem długości. Wklej kanoniczny tekst żądania tutaj, aby sprawdzić odcisk SHA3-256 przed zastosowaniem HMAC.

Jak generować hashe SHA-3

  1. 1

    Wklej tekst w polu wejściowym

    Wybierz zakładkę Tekst i wpisz lub wklej dowolny ciąg. Hash SHA3-256 aktualizuje się na bieżąco podczas pisania. Przy pierwszym użyciu biblioteka js-sha3 (~10 KB) jest pobierana i buforowana — możesz zauważyć krótkie opóźnienie przy pierwszym hashowaniu; wszystkie kolejne hashe są natychmiastowe. Algorytm jest już ustawiony na SHA-3 (NIST FIPS 202 SHA3-256).

  2. 2

    Skopiuj 64-znakowe wyjście hex

    Kliknij przycisk Kopiuj obok wyniku hash. 64-znakowy ciąg hex małymi literami jest kopiowany do schowka. Użyj przełącznika Wielkie litery, jeśli system docelowy wymaga wielkich liter. To wyjście odpowiada temu, co produkuje dowolna implementacja SHA3-256 zgodna z FIPS 202 — ale pamiętaj, że różni się od keccak256 Ethereum dla tych samych danych wejściowych.

  3. 3

    Weryfikuj za pomocą zakładki Porównaj

    Przełącz na zakładkę Porównaj i wklej dwa hashe SHA3-256 obok siebie. Narzędzie używa porównania w stałym czasie do zgłaszania zgodności lub niezgodności bez ujawniania informacji o czasie. Przydatne do weryfikacji wektorów testowych NIST CAVP, sprawdzania manifestów archiwalnych lub potwierdzania, że dwie implementacje SHA3-256 produkują identyczne wyjście.

Szczegóły techniczne

Algorytm: konstrukcja gąbki Keccak-f[1600]
SHA3-256 stosuje permutację Keccak-f[1600] (24 rundy operacji theta, rho, pi, chi, iota na tablicy stanu 5×5×64) w konstrukcji gąbki z tempem=1088 bitów i pojemnością=512 bitów. Dane wejściowe są pochłaniane w blokach 136-bajtowych (1088-bitowych); wyciskanych jest 256 bitów wyjścia. Separator domeny FIPS 202 dołącza 0x06 przed wypełnieniem. Implementacja: NIST FIPS 202 (2015) sekcja 6.
Wyjście: SHA3-256 domyślnie, 64 znaki hex (FIPS 202 definiuje też 224/384/512)
Narzędzie wyprowadza SHA3-256: zawsze dokładnie 64 znaki szesnastkowe (256 bitów = 32 bajty). NIST FIPS 202 wystandaryzował również SHA3-224 (56 znaków), SHA3-384 (96 znaków) i SHA3-512 (128 znaków) — wszystkie używające tej samej permutacji Keccak-f[1600] z różnymi podziałami tempa/pojemności. Długość wyjścia jest stała niezależnie od rozmiaru wejścia.
Wydajność: lazy-loaded js-sha3 (~10 KB); ~150–400 MB/s w przeglądarce
W odróżnieniu od tras SHA-2 (które używają natywnego Web Crypto API przeglądarki), SHA-3 nie jest w specyfikacji Web Crypto. Narzędzie ładuje bibliotekę js-sha3 (~10 KB skompresowane gzip) przy pierwszym użyciu, a następnie ją buforuje. Typowa przepustowość: 150–400 MB/s w JavaScript, wobec 400–700 MB/s dla SHA-256 przez Web Crypto. Do hashowania tekstu (kilobajty) różnica jest niezauważalna. Główny pakiet dla innych tras SHA nie jest dotknięty tym lazy-loadingiem.
Standardy: NIST FIPS 202 (2015), NIST SP 800-185 (KMAC), NIST IR 8105
Wystandaryzowany w FIPS 202 (sierpień 2015). NIST SP 800-185 (2016) definiuje KMAC128 i KMAC256 — funkcje MAC oparte na kluczu SHA-3, które są natywnie odporne na rozszerzenie długości bez owijacza HMAC. NIST IR 8105 zaleca warianty SHA-3 dla marginesu bezpieczeństwa postkwantowego. Aktualnie zatwierdzone dla wszystkich poziomów siły bezpieczeństwa do 2030 roku i dalej zgodnie z NIST SP 800-131A Rev 2.

Najlepsze praktyki

Nie mylić SHA3-256 z keccak256 Ethereum
To różne algorytmy z różnymi wyjściami dla każdego wejścia. Narzędzie oblicza NIST FIPS 202 SHA3-256 (bajt wypełniający 0x06). keccak256 Ethereum używa oryginalnego wypełnienia Keccak (0x01). Jeśli obliczasz hashe adresów Ethereum, sloty przechowywania EVM lub wyniki keccak256() Solidity, potrzebujesz narzędzia specyficznego dla keccak256 — to narzędzie da błędne odpowiedzi dla tych przypadków użycia.
Używaj SHA-3 jako zabezpieczenia obok SHA-256, nie jako zamiennika
SHA-3 i SHA-2 używają strukturalnie różnych projektów (gąbka vs Merkle-Damgård). Manifest z podwójnym hashowaniem (SHA-256 + SHA3-256) zapewnia głębię obrony: jeśli kryptanalityczne złamanie zostanie kiedyś znalezione w konstrukcji jednej rodziny, druga pozostaje bezpieczna. Dla długoterminowych danych archiwalnych i dokumentów rządowych NIST zaleca rozważenie tego dwualgorytmicznego podejścia. Do codziennego użytku SHA-256 sam w sobie pozostaje doskonale wystarczający.
Preferuj KMAC nad HMAC-SHA3-256 dla nowych projektów MAC opartych na kluczu
NIST SP 800-185 definiuje KMAC128 i KMAC256 — MAC oparte na kluczu zbudowane na SHA-3. Ponieważ konstrukcja gąbki jest natywnie odporna na rozszerzenie długości, KMAC nie potrzebuje podwójnego owijania, którego wymaga HMAC dla bezpieczeństwa. Dla nowych protokołów mających elastyczność w wyborze algorytmu MAC, KMAC128 (128-bitowe bezpieczeństwo) lub KMAC256 (256-bitowe bezpieczeństwo) są czystsze i nieco bardziej wydajne niż HMAC-SHA3-256.
Używaj porównania w stałym czasie przy weryfikacji hashy SHA-3 w kodzie
Przy porównywaniu dwóch hashy SHA3-256 w kodzie zawsze używaj funkcji równości w stałym czasie: crypto.timingSafeEqual() w Node.js, hmac.compare_digest() w Pythonie, subtle.ConstantTimeCompare() w Go. Naiwna równość ciągów (=== lub ==) ujawnia informacje o czasie, które mogą pozwolić atakującemu na odtworzenie oczekiwanego hasha bajt po bajcie. Dotyczy to w równym stopniu SHA-3 i wszystkich innych funkcji hash. Zakładka Porównaj w tym narzędziu już używa porównania w stałym czasie.

Najczęściej zadawane pytania

Czy SHA-3 to to samo co Keccak?
Bliskie, ale nie identyczne. SHA-3 opiera się na algorytmie Keccak, który wygrał konkurs NIST SHA-3 w latach 2007–2012, ale NIST zmienił regułę wypełniania podczas standaryzacji. Oryginalny Keccak dołącza bajt sufiksu 0x01 przed wypełnieniem; NIST SHA-3 (FIPS 202, 2015) dołącza 0x06. Ta jednobajt różnica oznacza, że SHA3-256 i Keccak-256 produkują różne 64-znakowe wyjścia dla każdego wejścia. Algorytmy są skądinąd strukturalnie identyczne — ta sama permutacja Keccak-f[1600], ta sama konstrukcja gąbki. Gdy ktoś mówi „Keccak” w kontekście Ethereum/blockchain, prawie zawsze ma na myśli oryginalny wariant wypełnienia przed FIPS, nie NIST SHA-3.
Dlaczego Ethereum używa keccak256, a nie SHA-3?
Ethereum było projektowane w latach 2013–2014 i uruchomione w 2015 roku — przed finalizacją SHA-3 przez NIST w sierpniu 2015 roku. Gdy protokół Ethereum był zamrażany, oryginalna propozycja zespołu Keccak była implementacją referencyjną. NIST zmienił następnie wypełnienie podczas standaryzacji, ale Ethereum nie mogło wstecznie przyjąć wariantu FIPS 202 bez przerwania konsensusu (każdy węzeł musi obliczać identyczne hashe). Rezultatem jest trwałe rozgałęzienie: keccak256 Ethereum używa oryginalnego wypełnienia Keccak (0x01), podczas gdy SHA3-256 tego narzędzia używa wypełnienia NIST FIPS 202 (0x06). Ten sam strukturalny algorytm, różne wyjścia. Nigdy nie używaj tego narzędzia do replikowania wyprowadzania adresu Ethereum ani EVM keccak256 — uzyskasz błędne wyniki.
Czym jest konstrukcja gąbki?
Konstrukcja gąbki to alternatywa SHA-3 dla łańcuchowania Merkle-Damgård SHA-2. Zamiast kompresowania danych wejściowych blok po bloku do bieżącego stanu hash (Merkle-Damgård), gąbka ma dwie fazy: pochłanianie (dane wejściowe są poddawane operacji XOR z częścią stanu i mieszane za pomocą permutacji Keccak-f[1600] wielokrotnie) i wyciskanie (bity wyjściowe są odczytywane ze stanu). Kluczowa korzyść bezpieczeństwa: stan wewnętrzny jest większy niż wyjście — SHA3-256 używa stanu 1600-bitowego, ale wyprowadza tylko 256 bitów, pozostawiając 1344 bitów ukrytego stanu. Atakujący, który widzi tylko 256-bitowe wyjście, nie może odtworzyć pełnego stanu, aby rozszerzyć wiadomość, czyniąc ataki rozszerzenia długości strukturalnie niemożliwymi bez owijacza. Różni się to od SHA-256, który wymaga HMAC, aby zapobiec rozszerzeniu długości.
Czy powinienem używać SHA-3 zamiast SHA-2?
Nie domyślnie — zarówno SHA-256, jak i SHA3-256 są aktualnie bezpieczne i zatwierdzone przez NIST. SHA-3 jest zaprojektowany jako strukturalne zabezpieczenie dla SHA-2: ponieważ używają zupełnie różnych projektów (Merkle-Damgård vs gąbka), złamanie jednego algorytmu nie kompromituje drugiego. Używaj SHA-3, gdy: (1) protokół tego wyraźnie wymaga, (2) potrzebujesz odporności na rozszerzenie długości bez owijacza HMAC, (3) budujesz nowy system pragnący odporności algorytmu na przyszłość, lub (4) organizacja nakazuje hash SHA-3 jako backup obok SHA-256. Do codziennych sum kontrolnych plików i odcisków certyfikatów SHA-256 pozostaje powszechnym standardem z lepszą obsługą bibliotek i sprzętu.
Czy SHA-3 jest szybszy od SHA-256?
W oprogramowaniu zazwyczaj wolniejszy. SHA3-256 zazwyczaj osiąga 150–400 MB/s w przeglądarce JavaScript, w porównaniu z 400–700 MB/s dla SHA-256 przez Web Crypto API (który używa natywnej implementacji SHA-2 na poziomie C przeglądarki). W dedykowanym sprzęcie i układach ASIC (np. niestandardowych chipach bezpieczeństwa) permutacja Keccak-f[1600] SHA-3 jest często szybsza, ponieważ lepiej się zrównoleglа i używa tylko prostych operacji bitowych (XOR, AND, rotacja) — bez modulowanego dodawania. Do hashowania tekstu (kilobajty) różnica wydajności jest niezauważalna; do masowego hashowania pliku ma znaczenie.
Jak długi jest hash SHA-3 z tego narzędzia?
Narzędzie domyślnie używa SHA3-256, który zawsze produkuje dokładnie 64 znaki szesnastkowe (256 bitów = 32 bajty, 2 znaki hex na bajt). NIST FIPS 202 definiuje również SHA3-224 (56 znaków hex), SHA3-384 (96 znaków hex) i SHA3-512 (128 znaków hex). Wszystkie korzystają z tej samej permutacji Keccak-f[1600]; różnią się tylko podziałem pojemności/tempa i długością wyjścia. Dla porównania: SHA-256 produkuje również 64 znaki hex, ale są to różne 64-znakowe ciągi dla tych samych danych wejściowych.
Czy SHA-3 jest odporny na ataki kwantowe?
Częściowo. Algorytm Grovera na komputerze kwantowym może pierwiastkować przestrzeń wyszukiwania dowolnej funkcji hash, efektywnie zmniejszając poziom bezpieczeństwa o połowę. SHA3-256 ma 256 bitów odporności na pre-image, co jest zredukowane do 128 bitów w ataku kwantowym — nadal bezpieczne w ramach jakiegokolwiek wiarygodnego modelu zagrożeń w bliskiej przyszłości. Ważna przewaga nad SHA-2: konstrukcja gąbki SHA-3 jest niezwiązana z Merkle-Damgård, więc nie jest dotknięta żadną techniką kryptoanalizy specyficzną dla funkcji kompresji SHA-2. Wskazówki postkwantowe NIST zalecają SHA-3 jako preferowany hash dla nowych protokołów pragnących różnorodności projektu obok SHA-2.
Czy moje dane są wysyłane na serwer?
Nie. Po początkowym ładowaniu biblioteki (skrypt js-sha3 jest pobierany raz z sieci CDN, ~10 KB), całe hashowanie działa całkowicie w przeglądarce w JavaScript. Otwórz Narzędzia deweloperskie → zakładka Sieć podczas hashowania tekstu — zobaczysz zero wychodzących żądań zawierających dane wejściowe. W odróżnieniu od narzędzi SHA-2 na tej stronie (które używają wbudowanego w przeglądarkę Web Crypto API), SHA-3 nie jest jeszcze w specyfikacji Web Crypto, więc wymagana jest biblioteka JavaScript. Pobranie biblioteki to jedyne żądanie sieciowe; tekst nigdy nie opuszcza strony. Patrz też: generator SHA-256 i generator MD5 nie używają żadnej zewnętrznej biblioteki.
Czym był konkurs NIST SHA-3?
NIST przeprowadził otwarty konkurs od 2007 do 2012 roku w celu wybrania trzeciego standardu Secure Hash Algorithm — nie po to, aby zastąpić SHA-2 (który pozostaje bezpieczny), ale aby zdywersyfikować krajobraz algorytmów hash na wypadek złamania SHA-2. 64 wstępne zgłoszenia zostały zawężone do 5 finalistów: BLAKE, Grøstl, JH, Keccak i Skein. Keccak, zaprojektowany przez Guido Bertoni, Joan Daemen, Michaëla Peetsa i Gillesa Van Assche'a (ze STMicroelectronics i NXP Semiconductors), został wybrany zwycięzcą w październiku 2012 roku i wystandaryzowany jako SHA-3 w NIST FIPS 202 w sierpniu 2015 roku. Jego wybór był godny uwagi ze względu na wybranie fundamentalnie innego projektu niż SHA-2, a nie wariantu ewolucyjnego.
Czy SHA-3 jest podatny na ataki rozszerzenia długości?
Nie — z założenia. Ataki rozszerzenia długości wykorzystują fakt, że konstrukcje Merkle-Damgård (SHA-256, SHA-512, MD5) ujawniają stan wewnętrzny w wyjściu hash, pozwalając atakującemu dołączyć dane do zahashowanej wiadomości bez znajomości tajnego prefiksu. Konstrukcja gąbki SHA-3 całkowicie tego unika: 1600-bitowy stan wewnętrzny jest większy niż 256-bitowe wyjście, więc wyjście nie ujawnia wystarczającego stanu, aby rozszerzyć wiadomość. Oznacza to, że możesz używać zwykłego SHA3-256 jako prymitywu MAC opartego na kluczu (KMAC) bezpiecznie, podczas gdy używanie surowego SHA-256 jako MAC opartego na kluczu (HASH(key || message)) jest niebezpieczne bez owijacza HMAC.

Powiązane narzędzia

Zobacz wszystkie narzędzia →