Hash Identifier

Identifikujte typ hash podle délky a formátu — MD5, SHA-1, SHA-256 a další

Řetězec Hash

Běží lokálně · Bezpečné pro vkládání tajných údajů

Co je identifikace hashe?

Identifikace hashe je proces zjištění, který kryptografický hashovací algoritmus vyprodukoval daný digest. Kryptografické hashovací funkce jako MD5, SHA-1 a SHA-256 generují výstupy pevné délky a právě délka výstupu je hlavním ukazatelem při identifikaci neznámého hashe. Narazíte-li na hexadecimální řetězec ve výpisu databáze, konfiguračním souboru nebo odpovědi API, nástroj pro identifikaci hashe vám řekne, který algoritmus ho pravděpodobně vygeneroval.

Každý hashovací algoritmus mapuje libovolná vstupní data na výstup pevné velikosti nazývaný digest. MD5 vždy produkuje 128 bitů (32 hex znaků), SHA-1 vždy produkuje 160 bitů (40 hex znaků) a SHA-256 vždy produkuje 256 bitů (64 hex znaků). Tato deterministická délka výstupu umožňuje algoritmickou identifikaci bez přístupu k původnímu vstupu nebo hashovacímu kódu.

Identifikace pouze podle délky není vždy jednoznačná. Několik algoritmů sdílí stejnou velikost výstupu — například SHA-256 a SHA3-256 oba produkují 64znakové hex digesty. V takových případech nástroj pro identifikaci hashe vrátí seznam kandidátních algoritmů seřazených podle rozšírenosti. Kontext — jako zdrojový systém, formát kódování (hex vs. Base64) a přítomnost prefixů algoritmů (například '$2b$' pro bcrypt) — pomáhá možnosti dále zúžit.

Proč používat identifikátor hashe?

Neznámé hashe se pravidelně objevují při bezpečnostních auditech, migracích databází a forenzní analýze. Identifikátor hashe odstraňuje dohady a během několika sekund vás nasměruje na správný algoritmus.

Okamžitá detekce
Vložte hash a ihned získáte kandidátní algoritmy. Není třeba ručně počítat znaky ani nahlížet do referenčních tabulek — nástroj automaticky mapuje délku hex řetězce na všechny odpovídající algoritmy.
🔒
Analýza s důrazem na soukromí
Veškerá identifikace probíhá výhradně ve vašem prohlížeči pomocí JavaScriptu. Hodnota hashe nikdy neopustí vaše zařízení, což je zásadní při analýze hashů hesel, autentizačních tokenů nebo citlivých forenzních důkazů.
📋
Úplné pokrytí algoritmů
Detekuje MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 a jejich SHA-3 ekvivalenty. Referenční tabulka zahrnuje celé rodiny SHA-2 a SHA-3 a také běžné alternativy jako RIPEMD-160 a BLAKE2.
🚫
Bez účtu nebo instalace
Funguje okamžitě v každém moderním prohlížeči. Žádná registrace, žádný API klíč, žádný CLI nástroj k instalaci. Přidejte si záložku a použijte kdykoli narazíte na neznámý hash — na jakémkoli OS, jakémkoli zařízení.

Případy použití identifikátoru hashe

Bezpečnostní audit
Při penetračních testech identifikace algoritmů hashů hesel v uniklých databázích určuje přístup k prolomení. Hashe MD5 a SHA-1 signalizují slabou ochranu a lze je upřednostnit při nápravě.
Migrace databáze
Při migraci uživatelských záznamů mezi systémy musí být znám algoritmus uloženého hashe hesla, aby bylo možné správně nakonfigurovat novou autentizační vrstvu. Chybná identifikace algoritmu způsobí selhání všech přihlášení.
DevOps a CI/CD
Build pipeline často obsahují kontrolní součty pro ověření artefaktů. Zjištění, zda je kontrolní součet SHA-256 nebo SHA-512, zajistí použití správného ověřovacího příkazu v deploymentových skriptech.
Digitální forenzika
Forenzní experti se setkávají s hash digesty v protokolech integrity souborů, záznamech blockchainu a metadatech důkazů. Identifikace algoritmu je předpokladem pro ověření řetězce custody důkazů.
Integrace API
API třetích stran někdy vracejí hodnoty hashů bez dokumentace použitého algoritmu. Identifikace typu hashe z odpovědi umožňuje správně nakonfigurovat ověřování podpisu webhooku nebo validaci kontrolního součtu.
Výuka kryptografie
Studenti procházející kurzy kryptografie mohou vkládat hashe generované různými algoritmy a okamžitě sledovat vztah mezi volbou algoritmu, délkou výstupu a bezpečnostními vlastnostmi.

Referenční tabulka délek hashovacích algoritmů

Níže uvedená tabulka mapuje každý běžný hashovací algoritmus na velikost výstupu v bitech, hex znacích a surových bajtech. Jedná se o primární vyhledávací tabulku používanou nástroji pro identifikaci hashů. Pokud více algoritmů sdílí stejnou délku hex výstupu, je k jejich rozlišení potřebný další kontext.

AlgoritmusBityHex znakyBajtyPoznámky
MD51283216Broken — collisions trivial since 2004
SHA-11604020Deprecated — SHAttered attack (2017)
SHA-2242245628Truncated SHA-256; rarely used standalone
SHA-2562566432Current standard; TLS, Git, Bitcoin
SHA-3843849648Truncated SHA-512; CNSA Suite approved
SHA-51251212864Maximum SHA-2 output; large-data hashing
SHA3-2562566432Keccak-based; NIST alternative to SHA-2
SHA3-51251212864Keccak-based; highest SHA-3 strength
RIPEMD-1601604020Used in Bitcoin address derivation
BLAKE2s2566432Faster than SHA-256; 256-bit output

Rozlišení nejednoznačných délek hashů

Některé délky hex řetězců odpovídají více algoritmům. Dvě nejčastější nejednoznačnosti jsou 64znakové hashe (SHA-256 vs. SHA3-256) a 40znakové hashe (SHA-1 vs. RIPEMD-160). Zde je návod, jak je odlišit, když délka samotná nestačí.

64 hex znaky: SHA-256 vs. SHA3-256
Oba produkují 256bitové (64znakové) digesty. SHA-256 je v praxi daleko rozšířenější — Git commity, TLS certifikáty, bloky Bitcoinu a většina API podpisů používá SHA-256. SHA3-256 se typicky vyskytuje pouze v systémech, které výslovně vyžadují soulad s NIST SP 800-185 nebo konstrukce založené na Keccaku. Potvrďte v dokumentaci zdrojového systému.
40 hex znaků: SHA-1 vs. RIPEMD-160
SHA-1 je daleko rozšířenější 160bitový hash — historicky používaný v Gitu (před přechodem na SHA-256), TLS a podepisování kódu. RIPEMD-160 se vyskytuje především při generování bitcoinových adres (HASH160 = SHA-256 následovaný RIPEMD-160). Pokud hash pochází z kontextu kryptoměn, zvažte RIPEMD-160; jinak je pravděpodobným kandidátem SHA-1.

Příklady kódu

Níže jsou funkční implementace identifikace hashe podle délky hex řetězce ve čtyřech jazycích. Každá funkce ověří hex kódování, vyhledá počet znaků a vrátí všechny odpovídající algoritmy.

JavaScript
function identifyHash(hex) {
  const len = hex.length
  const isHex = /^[0-9a-fA-F]+$/.test(hex)
  if (!isHex) return ['Not a hex-encoded hash']

  const map = {
    32:  ['MD5'],
    40:  ['SHA-1', 'RIPEMD-160'],
    56:  ['SHA-224', 'SHA3-224'],
    64:  ['SHA-256', 'SHA3-256', 'BLAKE2s'],
    96:  ['SHA-384', 'SHA3-384'],
    128: ['SHA-512', 'SHA3-512', 'BLAKE2b'],
  }
  return map[len] || [`Unknown (${len} hex chars)`]
}

identifyHash('d41d8cd98f00b204e9800998ecf8427e')
// → ["MD5"]

identifyHash('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')
// → ["SHA-256", "SHA3-256", "BLAKE2s"]
Python
import re

HASH_LENGTHS = {
    32:  ['MD5'],
    40:  ['SHA-1', 'RIPEMD-160'],
    56:  ['SHA-224', 'SHA3-224'],
    64:  ['SHA-256', 'SHA3-256', 'BLAKE2s'],
    96:  ['SHA-384', 'SHA3-384'],
    128: ['SHA-512', 'SHA3-512', 'BLAKE2b'],
}

def identify_hash(hex_string: str) -> list[str]:
    hex_string = hex_string.strip()
    if not re.fullmatch(r'[0-9a-fA-F]+', hex_string):
        return ['Not a hex-encoded hash']
    return HASH_LENGTHS.get(len(hex_string), [f'Unknown ({len(hex_string)} hex chars)'])

identify_hash('da39a3ee5e6b4b0d3255bfef95601890afd80709')
# → ['SHA-1', 'RIPEMD-160']

identify_hash('a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a')
# → ['SHA-256', 'SHA3-256', 'BLAKE2s']
Go
package main

import (
	"fmt"
	"regexp"
)

var hexPattern = regexp.MustCompile("^[0-9a-fA-F]+$")

var hashLengths = map[int][]string{
	32:  {"MD5"},
	40:  {"SHA-1", "RIPEMD-160"},
	56:  {"SHA-224", "SHA3-224"},
	64:  {"SHA-256", "SHA3-256", "BLAKE2s"},
	96:  {"SHA-384", "SHA3-384"},
	128: {"SHA-512", "SHA3-512", "BLAKE2b"},
}

func identifyHash(hex string) []string {
	if !hexPattern.MatchString(hex) {
		return []string{"Not a hex-encoded hash"}
	}
	if algos, ok := hashLengths[len(hex)]; ok {
		return algos
	}
	return []string{fmt.Sprintf("Unknown (%d hex chars)", len(hex))}
}

func main() {
	fmt.Println(identifyHash("d41d8cd98f00b204e9800998ecf8427e"))
	// → [MD5]
}
CLI (Bash)
#!/bin/bash
# Identify a hash from the command line by character count
hash="$1"

if [[ ! "$hash" =~ ^[0-9a-fA-F]+$ ]]; then
  echo "Not a hex-encoded hash"
  exit 1
fi

len=${#hash}
case $len in
  32)  echo "MD5 (128-bit)" ;;
  40)  echo "SHA-1 or RIPEMD-160 (160-bit)" ;;
  56)  echo "SHA-224 or SHA3-224 (224-bit)" ;;
  64)  echo "SHA-256 or SHA3-256 (256-bit)" ;;
  96)  echo "SHA-384 or SHA3-384 (384-bit)" ;;
  128) echo "SHA-512 or SHA3-512 (512-bit)" ;;
  *)   echo "Unknown hash length: $len chars" ;;
esac

# Usage: ./identify.sh d41d8cd98f00b204e9800998ecf8427e
# → MD5 (128-bit)

Časté dotazy

Jak funguje identifikace hashe?
Identifikace hashe se primárně opírá o délku hex kódovaného digestu. Každý hashovací algoritmus produkuje pevný počet výstupních bitů: MD5 produkuje 128 bitů (32 hex znaků), SHA-1 produkuje 160 bitů (40 hex znaků), SHA-256 produkuje 256 bitů (64 hex znaků) a tak dále. Identifikátor změří délku řetězce, ověří, že obsahuje pouze hexadecimální znaky, a namapuje ji na známé velikosti výstupů algoritmů.
Dokáže identifikátor hashe určit přesný algoritmus s jistotou?
Ne vždy. Více algoritmů může produkovat stejnou délku výstupu. SHA-256 a SHA3-256 oba výstupují 64 hex znaků. SHA-1 a RIPEMD-160 oba výstupují 40 hex znaků. V takových případech nástroj vrátí všechny kandidáty. K zúžení na jediný algoritmus potřebujete kontext — zdrojový systém, dokumentaci nebo prefixy algoritmů.
Co když je můj hash kódován Base64 místo hex?
Base64 kódované hashe používají jinou znakovou sadu (A–Z, a–z, 0–9, +, /) a mají jiné délky než jejich hex ekvivalenty. 256bitový hash má 44 Base64 znaků, ale 64 hex znaků. Nejprve dekódujte Base64 řetězec na surové bajty, pak zkontrolujte délku v bajtech: 16 bajtů = MD5, 20 bajtů = SHA-1, 32 bajtů = SHA-256, 48 bajtů = SHA-384, 64 bajtů = SHA-512.
Je bezpečné vkládat hashe hesel do online identifikátoru?
Tento nástroj běží výhradně ve vašem prohlížeči — žádná data nejsou přenášena na žádný server. Hash nikdy neopustí vaše zařízení. Pro maximální operační bezpečnost při formálním auditu to můžete ověřit kontrolou záložky Síť v nástrojích pro vývojáře vašeho prohlížeče nebo použitím nástroje offline po načtení stránky.
Proč se MD5 stále používá, přestože je kryptograficky prolomený?
MD5 je prolomený z hlediska odolnosti proti kolizím — útočník může sestavit dva různé vstupy produkující stejný hash. Přesto se MD5 stále používá v nekritických kontextech: kontrolní součty souborů pro ověření stahování, klíče cache, deduplikace a ETagy v HTTP. Pro tyto účely jsou náhodné kolize astronomicky nepravděpodobné a záměrné útoky nejsou relevantní. MD5 nesmí být používán pro hashování hesel, digitální podpisy nebo ověřování certifikátů.
Jak identifikuji hashe bcrypt, scrypt nebo Argon2?
Funkce pro hashování hesel jako bcrypt, scrypt a Argon2 používají místo surového hex výstupu charakteristické řetězcové prefixy. Hashe Bcrypt začínají '$2a$', '$2b$' nebo '$2y$' následovanými hodnotou cost faktoru. Hashe Argon2 začínají '$argon2id$' nebo '$argon2i$'. Hashe Scrypt typicky začínají '$scrypt$'. Jedná se o surové kryptografické digesty, takže identifikace podle délky se neuplatní — samotný prefix identifikuje algoritmus.
Jaký je rozdíl mezi SHA-2 a SHA-3?
SHA-2 (zahrnující SHA-256, SHA-384 a SHA-512) je založen na konstrukci Merkle-Damgård navržené NSA a standardizované v FIPS 180-4. SHA-3 (SHA3-256, SHA3-384, SHA3-512) je založen na houbové konstrukci Keccak, vybrané prostřednictvím veřejné soutěže NIST a standardizované v FIPS 202. Produkují stejné délky výstupů na odpovídajících úrovních bezpečnosti, ale používají zásadně odlišné vnitřní struktury. SHA-3 byl navržen jako záložní řešení pro případ, že by byly nalezeny strukturální slabiny SHA-2, ačkoli žádné takové slabiny dosud prokázány nebyly.