Generatore di hash SHA1

SHA-1 produce un digest di 160 bit (40 caratteri esadecimali) ed è l’hash dietro gli ID oggetti git, i checksum SVN legacy e una serie di sistemi di firma pre-2017. Incolla qualsiasi testo e ottieni l’hash deterministico. Un grande avvertimento all’inizio: SHA-1 è compromesso per la resistenza alle collisioni (SHAttered, 2017) e non deve essere utilizzato per nuove firme o memorizzazione delle password, è accettabile solo per controlli di integrità non avversariali.

Come calcolare un hash SHA-1

  1. 1

    Incolla il tuo input

    Qualsiasi testo, una stringa, un file completo convertito in testo, o una sequenza esadecimale.

  2. 2

    La codifica è UTF-8

    L'input è serializzato come byte UTF-8 prima dell'hashing, corrispondendo al valore predefinito in OpenSSL, Python hashlib e Node crypto.

  3. 3

    Il ciclo Merkle-Damgård viene eseguito

    Il messaggio viene riempito, suddiviso in blocchi da 512 bit e alimentato attraverso la funzione di compressione SHA-1 per 80 round per blocco.

  4. 4

    Copia il digest esadecimale di 40 caratteri

    L'output è sempre di 40 caratteri esadecimali minuscoli (160 bit).

SHA-1 a colpo d’occhio

Proprietà Valore
Dimensione output 160 bit / 40 caratteri esadecimali
Dimensione blocco 512 bit
Round 80
Resistenza alle collisioni Compromessa (2^63 prefisso scelto)
Resistenza all’immagine Intatta (al momento della scrittura)
Velocità ~500 MB/s su un singolo core moderno

Dove SHA-1 è ancora accettabile

  • Git. Gli ID di commit e blob sono SHA-1 (con SHA-256 come opzione). Le collisioni confonderebbero la storia ma non possono forgiare un commit senza la chiave dell’autore.
  • Deduplicazione non di sicurezza. Indirizzamento del contenuto dell’oggetto dove il modello di minaccia non include un attaccante.
  • API retrocompatibili. Webhook legacy come X-Hub-Signature di GitHub (v1).
  • Identificatori forensi. Fingerprinting dei file per deduplicazione attraverso un archivio.

Dove SHA-1 non è accettabile

  • Certificati TLS. I browser hanno iniziato a non fidarsi dei certificati SHA-1 dal 2017.
  • Firma del codice. Microsoft, Apple e Mozilla hanno rifiutato le firme SHA-1.
  • Hashing delle password. Usa Argon2id o bcrypt.
  • HMAC in un nuovo design. Usa HMAC-SHA-256 come minimo.

Se vuoi verificare l’output

Confronta con echo -n "hello" | sha1sum su qualsiasi sistema Unix. L’hash per la stringa hello è aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d.

Domande frequenti

Non matematicamente. Per input brevi comuni, un attaccante con un dizionario precomputato può identificarli istantaneamente, motivo per cui gli hash da soli non proteggono le password. Per una stringa casuale di 40 caratteri, non esiste una pratica inversione.

No. SHA (Secure Hash Algorithm) è una famiglia pubblicata dal NIST. SHA-1 è l’algoritmo a 160 bit del 1995. SHA-2 è la famiglia che include SHA-224, SHA-256, SHA-384 e SHA-512.

Per compatibilità con oltre un decennio di storia. Dal 2017, git si indurisce contro le collisioni a prefisso scelto (SHA-1DC) e supporta repository SHA-256 per nuovi progetti.

Sul nostro server. Il tuo testo viene inviato tramite una connessione cifrata, elaborato con la funzione SHA-1 standard e ti viene restituito il digest di 40 caratteri. Non conserviamo il testo che invii. Poiché SHA-1 è unidirezionale, il digest stesso non può essere riconvertito nel tuo input.

Strumenti correlati

Strumento disponibile in altre lingue