Deutsch

Entwicklertools · SHA-Hash-Rechner

Wie SubtleCrypto.digest einen SHA-256-Hash im Browser berechnet

· Wie es funktioniert

sha-256 Kryptographie Browser-APIs

UTF-8 bytes gibt einen Browser-SHA-256-Digest ein und verlässt ihn als Hexadezimalzahl
Originale ToolAcre-Vektorillustration

Jeder moderne Browser kann Bytes nativ über Web Crypto hashen. Dieser Beitrag folgt einer Zeichenfolge von TextEncoder über crypto.subtle.digest bis hin zu einem Hex-Digest und erläutert die Einschränkungen jedes Schritts.

Ein Hash ohne npm-Installation – die Situationen, in denen ein nativer Digest eine gebündelte Bibliothek übertrifft

Sie können einen Digest für einen kurzen Textwert berechnen, ohne ein Hashing-Paket zu installieren oder Daten auf einer Remote-Hash-Website zu veröffentlichen. Browser stellen crypto.subtle.digest auf sicheren Ursprüngen bereit. Ein Hash ist ein deterministischer Byte-Fingerabdruck fester Länge; Es verbirgt weder die Eingabe noch beweist es, wer sie eingegeben hat. ToolAcre verwendet die Browser-Implementierung, anstatt einen handgeschriebenen SHA-Algorithmus zu liefern, und behält die gehaschte Zeichenfolge im Tab bei.

Text besteht nicht aus Bytes – Codieren Sie die Eingabe vor dem Hashing mit TextEncoder in UTF-8 und warum dieser Schritt über die Antwort entscheidet

Der Text „Café“ und die in einen Hash eingespeisten Bytes sind nicht dieselbe Art von Objekten. TextEncoder ordnet die Zeichenfolge UTF-8 bytes (63 61 66 C3 A9 für Café) zu, während eine naive Latin-1-Konvertierung E9 für das letzte Zeichen verwendet und einen anderen Digest erzeugt hätte. Sogar visuell identischer Text kann unterschiedliche Unicode-Normalisierungsformen haben. Vereinbaren Sie Kodierung und Normalisierung, bevor Sie Hashes zwischen JavaScript, einer CLI und einem Server vergleichen. Der Textmodus von ToolAcre führt die UTF-8-Konvertierung explizit vor dem Hashing durch.

Der Digest-Aufruf – crypto.subtle.digest mit einem Algorithmusnamen und einem ArrayBuffer und warum er ein Versprechen zurückgibt

crypto.subtle.digest("SHA-256", Bytes) gibt ein Versprechen zurück, da die kryptografische Arbeit möglicherweise asynchron ist. warten Sie darauf, bevor Sie die Ausgabe lesen. Die Methode benötigt den gesamten Eingabepuffer und nicht einen Streaming-Iterator. SHA-256 gibt 256 bits (32 bytes) aus, unabhängig davon, ob die Eingabe drei Zeichen oder drei Millionen hatte. Die Einschränkung des sicheren Kontexts bedeutet, dass HTTPS oder Localhost für die SubtleCrypto-API erforderlich ist und das Tool deren Abwesenheit meldet, anstatt einen Fallback zu erfinden.

Von ArrayBuffer zu Hex – Umwandlung der Ergebnisbytes in die 64-stellige Zeichenfolge, die die Leute kennen

Das Versprechen wird in einen ArrayBuffer aus Bytes aufgelöst, nicht in die bekannte Folge von Hexadezimalziffern. Konvertieren Sie jedes Byte nach Bedarf in zwei Basis-16-Zeichen mit einer führenden Null, was genau 64 Kleinbuchstaben für SHA-256 ergibt. Diese hexadezimale Darstellung verdoppelt die Länge von 32 bytes, ändert jedoch nichts am Digest. Base64 könnte dasselbe 32 bytes kompakter darstellen; Ein Vergleich ist erst dann sinnvoll, wenn bestätigt wurde, dass Algorithmus, Eingabekodierung und Ausgabedarstellung übereinstimmen.

Ausgearbeitetes Beispiel – Schritt-für-Schritt-Hashing einer kurzen Zeichenfolge, wobei die Bytes in jeder Phase angezeigt werden

Für den ASCII-Text abc erzeugt UTF-8 die Bytes 61 62 63. SHA-256 dieser genauen Bytes ist ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Testen Sie dies in ToolAcre und einer anderen vertrauenswürdigen Hash-Implementierung: Die Änderung von abc in abc gefolgt von einem Zeilenumbruch führt zu einem anderen Ergebnis. Wenn sich die Ausgaben unterscheiden, überprüfen Sie versteckte Leerzeichen und Byte-Kodierung, bevor Sie das kryptografische Grundelement vermuten. Der angezeigte Digest ist ein reproduzierbarer Testvektor und kein Anspruch darauf, dass abc ein Geheimnis ist.

Sichere Kontexte – warum crypto.subtle nur auf HTTPS und localhost verfügbar ist

crypto.subtle ist eine Secure-Context-API. Eine Produktions-HTTPS-Seite und eine Localhost-Entwicklungsseite machen es im Allgemeinen verfügbar; Bei einer gewöhnlichen unsicheren Remote-HTTP-Seite ist dies möglicherweise nicht der Fall. Das Tool benötigt außerdem genügend Speicher, um die Eingabe und die Ausgabe zu speichern. Wenn Web Crypto nicht verfügbar ist, würde ein stillschweigender Wechsel zu einem nicht überprüften JavaScript-Hash dazu führen, dass ein sicherheitsrelevantes Ergebnis von einer anderen Implementierung abhängt. Scheitern Sie klar und wählen Sie stattdessen eine sichere Umgebung.

Was dies nicht abdeckt – Keyed Hashing (HMAC) und inkrementelles Hashing sehr großer Eingaben, die die One-Shot-Digest-API nicht bietet

Die One-Shot-Digest-API ist kein inkrementelles Hashing für große Dateien. SHA-256 ist kein Kennwortspeicherschema: Schnelle, ungesalzene Hashes machen das Raten kostengünstig, daher ist für die Kennwortspeicherung ein speziell entwickeltes, gesalzenes und bewusst kostspieliges KDF erforderlich. SHA-1 wird möglicherweise für die Interoperabilität mit älteren Systemen angezeigt, seine Kollisionsresistenz ist jedoch beeinträchtigt und es ist keine gute Wahl für neue Integritäts- oder Signatursysteme. HMAC ist eine Schlüsselauthentifizierung, nicht derselbe Vorgang wie das Verdauen nicht authentifizierter Bytes.

Fazit: Der Browser verfügt bereits über eine Hash-Funktion – der ToolAcre SHA-Hash-Rechner verwendet genau diese API, sodass seine Ausgabe die eigene des Browsers ist

Der Browser bietet bereits SHA-256: Text als Bytes kodieren, Digest abwarten und dann das Ergebnis zum Vergleich formatieren. Der ToolAcre SHA-Hash-Rechner folgt diesem Pfad für eingefügten Text und kennzeichnet SHA-1 als nur Legacy. Vergleichen Sie zuerst abc mit dem bekannten Ergebnis und hashen Sie dann das tatsächliche nicht sensible Material, dessen Bytes und Codierung Sie verstehen.