Generatore Hash SHA-256

Genera hash SHA-256 da qualsiasi testo

Testo di input

Esegue in locale · Sicuro per incollare segreti

Hash SHA-256

L'hash SHA-256 apparirà qui…

Cos’è l’hashing SHA-256?

SHA-256 (Secure Hash Algorithm a 256 bit) è una funzione hash crittografica della famiglia SHA-2, pubblicata dal NIST nel 2001 nell’ambito di FIPS 180-2 (aggiornato in FIPS 180-4). Qualunque sia l’input — un singolo carattere, un file da diversi gigabyte o una stringa vuota — SHA-256 produce un digest fisso di 256 bit (32 byte), convenzionalmente rappresentato come 64 caratteri esadecimali. SHA-256 è la funzione hash più diffusa nei sistemi in produzione, alla base delle catene di certificati TLS, del proof-of-work di Bitcoin, della Subresource Integrity (SRI) e dei flussi di firma del codice.

SHA-256 è una funzione unidirezionale: calcolare un hash da un input è veloce (centinaia di megabyte al secondo su hardware moderno), ma invertire il processo — trovare un input che produca un determinato hash — è computazionalmente impraticabile. Questa proprietà, chiamata resistenza alla preimmagine, rende SHA-256 adatto all’hashing delle password (se combinato con un salt e uno stretching della chiave), alle firme digitali e alla verifica dell’integrità dei dati. A differenza di MD5 e SHA-1, nessun attacco di collisione o di preimmagine è stato dimostrato contro SHA-256 completo.

La famiglia SHA-2 comprende sei varianti: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 e SHA-512/256. SHA-256 opera su parole a 32 bit con 64 cicli per blocco, ottimizzato per processori a 32 bit. SHA-512 usa parole a 64 bit e 80 cicli, il che può risultare più veloce su piattaforme a 64 bit. Per la maggior parte delle applicazioni in cui un digest a 256 bit è sufficiente, SHA-256 rimane la raccomandazione predefinita di NIST, IETF e CA/Browser Forum.

Perché usare un generatore SHA-256 online?

Generare un hash SHA-256 di solito richiede un comando da terminale o qualche riga di codice. Questo strumento basato su browser ti permette di calcolare digest SHA-256 senza installare nulla, cambiare contesto o scrivere uno script.

Hashing istantaneo nel browser
Incolla o digita qualsiasi testo e ottieni subito il digest SHA-256. La Web Crypto API gestisce il calcolo in modo nativo — senza overhead di librerie JavaScript.
🔒
Elaborazione con privacy garantita
Il tuo input non lascia mai il dispositivo. Tutto l’hashing viene eseguito localmente tramite la Web Crypto API integrata nel browser. Nessun dato viene trasmesso ad alcun server.
📋
Output pronti da copiare
Ottieni l’hash in esadecimale minuscolo o maiuscolo con un clic. Utile per confrontare checksum da package manager, pipeline CI o documentazione.
🔍
Verifica incrociata di valori di riferimento
Verifica rapidamente i digest SHA-256 da pagine di download, manifesti SBOM o log di audit senza aprire un terminale o scrivere codice usa e getta.

Casi d’uso di SHA-256

Frontend developer — Subresource Integrity
Calcola l’hash SHA-256 di uno script o foglio di stile ospitato su CDN per popolare l’attributo integrity nei tag script e link, proteggendo dagli attacchi alla supply chain.
Backend engineer — Firma delle richieste API
Molte API (AWS Signature V4, webhook Stripe) richiedono hash SHA-256 del payload della richiesta. Usa questo strumento per calcolare hash di riferimento durante lo sviluppo e il debug.
DevOps — Verifica degli artefatti
Verifica i checksum SHA-256 di binari scaricati, immagini base Docker o plugin per provider Terraform prima di distribuirli nell’infrastruttura di produzione.
QA engineer — Validazione dei vettori di test
Confronta gli output SHA-256 con i vettori di test NIST (esempi FIPS 180-4) per confermare che la tua implementazione di hashing gestisca correttamente i casi limite.
Data engineer — Fingerprinting a livello di riga
Calcola hash SHA-256 di chiavi composite o campi con dati personali per creare impronte deterministiche e irreversibili per la deduplicazione o la pseudonimizzazione nelle pipeline dati.
Studente — Corsi di crittografia
Sperimenta con SHA-256 per osservare l’effetto valanga: modifica un singolo carattere nell’input e osserva come l’intero output a 64 caratteri cambia in modo imprevedibile.

Confronto tra le varianti della famiglia SHA-2

SHA-256 appartiene alla famiglia SHA-2 definita in FIPS 180-4. Ogni variante comporta un compromesso tra dimensione del digest, caratteristiche di prestazione e margine di sicurezza. La tabella seguente confronta tutte le varianti SHA-2 che è probabile incontrare.

VarianteDimensione digestLunghezza esadecimaleDimensione in byteIdeale per
SHA-256256 bits64 hex chars32 bytesTLS, blockchain, code signing, JWTs, SRI
SHA-224224 bits56 hex chars28 bytesTruncated SHA-256 — rare, specific compliance
SHA-384384 bits96 hex chars48 bytesGovernment / CNSS, higher collision margin
SHA-512512 bits128 hex chars64 bytesDigital signatures, HMAC with large keys
SHA-512/256256 bits64 hex chars32 bytesSHA-512 speed on 64-bit CPUs, 256-bit output

SHA-256 vs SHA-1, MD5 e SHA-3

La scelta dell’algoritmo hash corretto dipende dai requisiti di sicurezza e dai vincoli di compatibilità. SHA-256 occupa il punto di equilibrio ideale: è sicuro, universalmente supportato (inclusa la Web Crypto API) e sufficientemente veloce per la maggior parte dei carichi di lavoro. La tabella di confronto seguente copre le proprietà più rilevanti nella scelta di una funzione hash.

ProprietàSHA-256SHA-1MD5SHA-3-256
Digest size256 bits (64 hex)160 bits (40 hex)128 bits (32 hex)256 bits (64 hex)
Security statusSecureBroken (2017)Broken (2004)Secure
Collision resistance2^128 operationsPractical attackPractical attack2^128 operations
Block size512 bits512 bits512 bits1600 bits (sponge)
Rounds64806424
StandardFIPS 180-4FIPS 180-4RFC 1321FIPS 202
Web Crypto APIYesYesNoNo
Primary use todayTLS, blockchain, SRILegacy git onlyNon-security checksumsBackup standard

Come funziona SHA-256 internamente

SHA-256 elabora l’input in blocchi da 512 bit (64 byte) tramite una costruzione di Merkle–Damgård. L’algoritmo inizializza otto parole di stato a 32 bit (H0–H7) derivate dalla parte frazionaria delle radici quadrate dei primi otto numeri primi. Ogni blocco passa attraverso 64 cicli di mescolamento che utilizzano operazioni bit a bit (AND, XOR, NOT, rotazione destra, scorrimento destra) e 64 costanti di ciclo derivate dalle radici cubiche dei primi 64 numeri primi.

Input: "hello world"
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
(256 bits = 32 bytes = 64 hex characters)
PassoDescrizione
PaddingAppend a 1-bit, then zeros until the message length is 448 mod 512. Append the original message length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
Message scheduleExpand each 16-word (32-bit) block into 64 words using sigma functions with right-rotate and right-shift operations.
CompressionProcess 64 rounds per block using Ch, Maj, and two Sigma functions with 64 round constants derived from cube roots of the first 64 primes.
OutputConcatenate the eight 32-bit state words (H0-H7) into a 256-bit (32-byte) digest, rendered as 64 hexadecimal characters.

L’effetto valanga garantisce che invertire un singolo bit nell’input modifichi circa il 50% dei bit di output. Questa proprietà, combinata con una resistenza alle collisioni di 2^128, è il motivo per cui SHA-256 rimane la raccomandazione di base per le applicazioni sensibili alla sicurezza nel 2026.

Esempi di codice SHA-256

SHA-256 è disponibile nativamente in ogni linguaggio e runtime principale. La Web Crypto API lo fornisce nei browser senza alcuna libreria. Gli esempi seguenti mostrano pattern di utilizzo reali, inclusa la gestione dell’input Unicode e l’hashing di file.

JavaScript (Web Crypto API)
// Works in all modern browsers and Node.js 18+
async function sha256(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-256', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha256('hello world')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha256').update('hello world').digest('hex')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
Python
import hashlib

# Basic SHA-256 hash
result = hashlib.sha256(b'hello world').hexdigest()
print(result)  # → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"

# Hash a string (encode to bytes first)
text = 'café ☕'
hashlib.sha256(text.encode('utf-8')).hexdigest()
# → "3eb53e00aa1bb4b1e8aab1ab38e56e6b8fb0b20e1cf7e1d19f36e4fad2537445"

# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
    sha = hashlib.sha256()
    for chunk in iter(lambda: f.read(8192), b''):
        sha.update(chunk)
    print(sha.hexdigest())
Go
package main

import (
    "crypto/sha256"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha256.Sum256(data)
    fmt.Printf("%x\n", hash)
    // → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}
CLI (Linux / macOS)
# Using sha256sum (Linux) or shasum (macOS)
echo -n "hello world" | sha256sum
# → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9  -

# macOS
echo -n "hello world" | shasum -a 256
# → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9  -

# Verify a file checksum
echo "b94d27b...  myfile.bin" | sha256sum -c
# → myfile.bin: OK

# Using openssl (cross-platform)
echo -n "hello world" | openssl dgst -sha256
# → SHA2-256(stdin)= b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

Domande frequenti

SHA-256 è ancora sicuro?
Sì. A partire dal 2026, nessun attacco pratico di collisione, preimmagine o seconda preimmagine è stato trovato contro SHA-256 completo. NIST, il CA/Browser Forum e l’IETF continuano a raccomandare SHA-256 per i certificati TLS, la firma del codice e le firme digitali. La resistenza teorica alle collisioni è di 2^128 operazioni, ben oltre i limiti computazionali attuali.
Qual è la differenza tra SHA-256 e SHA-2?
SHA-2 è il nome della famiglia di sei funzioni hash: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 e SHA-512/256. SHA-256 è il membro più comunemente usato. Quando la documentazione dice "usa SHA-2", quasi sempre intende SHA-256 nello specifico, a meno che non sia richiesto un digest più lungo.
SHA-256 può essere invertito o decriptato?
No. SHA-256 è una funzione hash unidirezionale, non cifratura. Non esiste una chiave né un processo di decifratura. L’unico modo per trovare l’input originale è un attacco a forza bruta o a dizionario, computazionalmente impraticabile per input sufficientemente complessi. Per input brevi o prevedibili (come le password comuni), esistono rainbow table precomputate, motivo per cui l’hashing delle password dovrebbe sempre usare un salt e una funzione KDF dedicata come bcrypt o Argon2.
Come si confronta SHA-256 con SHA-3?
SHA-3 (Keccak, FIPS 202) utilizza una struttura interna completamente diversa (costruzione a spugna) rispetto a SHA-256 (Merkle–Damgård). Sia SHA-256 che SHA-3-256 producono un digest a 256 bit e offrono una resistenza alle collisioni equivalente. SHA-3 è stato progettato come riserva nel caso in cui SHA-2 venisse compromesso, ma SHA-2 rimane intatto. SHA-256 ha un supporto runtime più ampio — in particolare, la Web Crypto API supporta SHA-256 ma non SHA-3.
SHA-256 è adatto per l’hashing delle password?
Non direttamente. Un hash SHA-256 grezzo di una password è vulnerabile agli attacchi a forza bruta e alle rainbow table perché SHA-256 è progettato per essere veloce. Per la memorizzazione delle password, usa una funzione di derivazione della chiave dedicata come bcrypt, scrypt o Argon2id, che aggiungono un salt e un fattore di lavoro configurabile per rallentare gli attacchi.
Perché Bitcoin usa SHA-256 doppio?
Bitcoin calcola SHA-256(SHA-256(data)) (noto come hash256) per gli header dei blocchi e gli ID delle transazioni. La doppia applicazione protegge dagli attacchi di estensione della lunghezza, in cui un attaccante aggiunge dati a un messaggio e calcola un hash valido senza conoscere l’input originale. Questa è una proprietà degli hash di Merkle–Damgård che SHA-256 a singolo passaggio non previene.
Cos’è la Subresource Integrity (SRI) e come si collega a SHA-256?
SRI è una specifica W3C che consente ai browser di verificare che una risorsa recuperata (script, foglio di stile) non sia stata manomessa. Si aggiunge un attributo integrity contenente un hash SHA-256 (o SHA-384/SHA-512) codificato in Base64 del contenuto atteso del file. Il browser calcola l’hash del file scaricato e si rifiuta di eseguirlo se gli hash non corrispondono. SHA-256 è l’algoritmo minimo supportato da SRI.