TK
Developer-Tools

SHA-1-Hash-Generator

160-Bit-SHA-1-Hashes für Text oder Dateien im Browser berechnen. Wird von git für Commit-IDs und älteren Zertifikaten verwendet. Sicherheitsseitig veraltet; SHA-256 ist der moderne Ersatz.

Eingabe
Hashes
Text einfügen, um MD5, SHA-1, SHA-256, SHA-384 und SHA-512 zu berechnen.

Eingaben bleiben auf diesem Gerät. Alle Developer-Tools auf TaskKit laufen vollständig im Browser. Tokens, Payloads und eingefügte Texte werden weder an TaskKit noch an Dritte übertragen.

Was dieses Tool macht

Berechnet den SHA-1-Hash beliebigen Texts oder Dateiinhalts im Browser und liefert einen 40-stelligen Hex-Digest. SHA-1 ist eine 160-Bit-Hashfunktion, 1995 vom NIST veröffentlicht (FIPS 180-1), entworfen von der NSA. Sie ist für Sicherheitszwecke deprecated: ein praktischer Kollisionsangriff ("SHAttered") wurde 2017 von Google und CWI Amsterdam demonstriert, Chosen-Prefix-Kollisionen folgten 2019. SHA-1 gilt nicht mehr als kryptografisch sicher.

Wo SHA-1 noch im Einsatz ist

  • Git-Object-IDs. Jeder Git-Commit, Tree und Blob wird über seinen SHA-1-Hash identifiziert. Gits Object-Modell migriert zu SHA-256 (das Flag --object-format=sha256 existiert), aber SHA-1 bleibt der Default für die überwältigende Mehrheit der Repositories. Das Kollisionsrisiko für Commit-IDs ist real, aber gemanagt: GitHub und andere Forges deployen SHAttered-artige Detection (die sha1dc-Library), um vorbereitete Kollisionen zu erkennen.
  • Subversion (SVN). Gleiche Begründung wie git, weniger Migrationsdruck.
  • Ältere TLS-Zertifikate. Browser haben SHA-1-signierten Zertifikaten 2017 das Vertrauen entzogen, aber Legacy-Systeme produzieren sie noch.
  • Bestehender Code, der für nicht-sicherheitsrelevante Zwecke hasht. Cache-Keys, Fingerprints, Dedup-Tabellen — alles in Ordnung.

Wo SHA-1 ungeeignet ist

  • Neue TLS-Zertifikate, Code-Signing-Zertifikate oder Dokumentsignaturen. SHA-256 oder SHA-384 verwenden.
  • Passwort-Speicherung. Verwende einen langsamen, gesalzenen Hash wie bcrypt oder Argon2. SHA-1 ist zu schnell und nicht dafür entworfen.
  • Alles, wo ein Angreifer die Eingabe wählen kann. Ein entschlossener Angreifer mit einem gemieteten Cluster kann eine SHA-1-Kollision in Tagen produzieren. Wenn dein Sicherheitsmodell zulässt, dass der Angreifer beeinflusst, was gehasht wird, ist SHA-1 gebrochen.
  • Subresource Integrity (SRI). Browser akzeptieren SHA-1 in integrity-Attributen, aber die Spezifikation empfiehlt mindestens SHA-256.

Test-Vektoren

Aus FIPS 180-2 und der SHA-1-Referenz-Suite:

  • Leerer String ""da39a3ee5e6b4b0d3255bfef95601890afd80709
  • "abc"a9993e364706816aba3e25717850c26c9cd0d89d
  • "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"84983e441c3bd26ebaae4aa1f95129e5e54670f1
  • "The quick brown fox jumps over the lazy dog"2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

Hinweise

Warum 40 Zeichen? SHA-1 erzeugt 160 Bit = 20 Byte. 20 Byte × 2 Hex-Zeichen pro Byte = 40 sichtbare Zeichen.

Warum nutzt git SHA-1, wenn es gebrochen ist? Git nutzt SHA-1 als content-adressierten Identifier, nicht als Sicherheits-Primitive. Das Bedrohungsmodell ist "zwei wohlgeformte Objekte kollidieren versehentlich" — das ist weiterhin astronomisch unwahrscheinlich. Das Bedrohungsmodell ist nicht "ein Angreifer pusht einen bösartigen Commit, der denselben Hash hat wie dein echter Commit" — dafür nutzen GitHub etc. sha1dc, um SHAttered-artige Vorbereitungen zu erkennen und abzulehnen. Migration zu SHA-256 läuft, aber langsam, weil die Install-Base riesig ist.

Warum unterscheidet sich mein SHA-1 von sha1sum? Trailing-Newline. echo "hello" | sha1sum enthält das \n. Das Einfügen von "hello" hier nicht. echo -n oder den File-Picker verwenden.

Verwandte Tools

  • Hash-Generator — fünf Hashes nebeneinander
  • SHA-256 — der moderne Ersatz für SHA-1
  • MD5 — der Vorgänger; noch gründlicher gebrochen