Generator haszy tablic
Generuj hash (MD5, SHA-1, SHA-256) z tablicy PHP lub danych JSON. Przydatne do cache key, porównywania struktur danych i fingerprintów. Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator haszy tablic PHP – fingerprint struktury danych
Porównywanie lub cache'owanie złożonych tablic PHP wymaga tworzenia deterministycznych kluczy. Narzędzie generuje hash z tablicy PHP (serialize + hash) lub JSON, co pozwala na szybkie porównywanie struktur bez pełnej iteracji.
Metody haszowania tablic w PHP
serialize() + hash(): serialize($arr) daje deterministyczny string reprezentacji tablicy. md5(serialize($arr)): szybki hash, 32 hex. sha1(serialize($arr)): 40 hex. hash("sha256", serialize($arr)): 64 hex. json_encode() + hash(): alternatywna serializacja (nie obsługuje zasobów/obiektów).
serialize() vs json_encode()
serialize(): natywne PHP, obsługuje obiekty (klasy), zasoby (częściowo), typy ścisłe. json_encode(): JSON-kompatybilny, przenośny (inne języki), wolniejszy dla zagnieżdżonych struktur. Dla prostych tablic asocjacyjnych: json_encode() jest porównywalny. Dla obiektów z metodami: serialize() jedyna opcja.
Kolejność kluczy a deterministyczność
Problem: ["b"=>2,"a"=>1] vs ["a"=>1,"b"=>2] mają różne serialize() ale logicznie identyczne. Rozwiązanie: ksort() rekurencyjny przed serializacją. Funkcja array_hash_sorted: function array_hash($a){ksort($a);foreach($a as &$v)if(is_array($v))$v=array_hash($v);return md5(serialize($a));}.
Zastosowania w aplikacjach
Cache key z parametrów zapytania: $key="sql:".array_hash($params). Wykrywanie zmian konfiguracji: porównaj hash pliku config z poprzednim. Etag HTTP: hash tablicy z danymi = wartość nagłówka ETag (cache validation). Duplikaty: porównaj hashe zamiast deep-equal.
Najczęstsze pytania
Czy MD5 jest bezpieczny do haszowania tablic?
Dla celów cache i porównywania danych – tak. MD5 jest wystarczający gdy nie chodzi o bezpieczeństwo kryptograficzne. Dla haseł: NIGDY – używaj password_hash() z bcrypt/argon2. MD5 jest łatwy do odwrócenia dla znanych danych (rainbow tables).
Jak porównać dwie tablice PHP bez kolejności kluczy?
Prosta równość: $a == $b (PHP sprawdza wartości, nie kolejność kluczy dla asocjacyjnych). Głęboka równość: funkcja rekurencyjna ksort + serialize. Biblioteka: symfony/property-access lub twig/twig. PHP 8.1+: array_is_list() dla list (numerycznych).
Jak generować ETag HTTP z danych?
$data = fetchFromDB(); $etag = array_hash($data). header("ETag: \"$etag\""); if ($_SERVER["HTTP_IF_NONE_MATCH"] === $etag) { http_response_code(304); exit; }. ETag pozwala przeglądniom cachować zasoby i sprawdzać czy się zmieniły bez pobierania całości.
Co to jest cache key i jak go konstruować?
Cache key: unikalny identyfikator dla cachowalnej wartości. Konstruowanie: "prefix:version:hash_params". Przykład: "user:v2:".md5(serialize($queryParams)). Redis: SET $key $value EX 3600. Memcached: $mc->set($key, $value, 3600). Narzędzie generuje hash gotowy do użycia jako klucz.
Czy serialize() jest bezpieczne do deserializacji?
unserialize() z niezaufanych danych = krytyczna luka bezpieczeństwa (PHP object injection, RCE). Nigdy nie deserializuj danych od użytkownika! Dla bezpiecznej serializacji: json_encode/json_decode (tylko dane, nie obiekty PHP). PHP 7+: unserialize($data, ["allowed_classes" => false]) ogranicza typy.
Powiązane narzedzia: generator testowego JSON API, walidator JSON i formater payloadow API.