Stand · Prototyp
Ein Prüfwert lässt sich nur reproduzieren, wenn dieselben Bytes mit demselben Verfahren verarbeitet werden. Die folgende Übung definiert dafür einen eigenen kleinen Vertrag; sie ist ausdrücklich keine Implementierung des internen SnapSite-Protokollformats.
Die Eingabe vor der Rechnung festlegen
Für den Prototyp nennt die Originalquelle SHA-256 als Protokollverfahren. Sie legt hier aber nicht die vollständige Reihenfolge, Kodierung und Serialisierung aller Protokollfelder offen. Erfinden Sie deshalb keinen vermeintlich kompatiblen Prüfer. Verwenden Sie zum Lernen stattdessen das separat definierte Beispiel: ein JSON-Array mit zwei Zeichenketten, ohne zusätzliche Leerzeichen, als UTF-8 kodiert. Seine Bedeutung bleibt auf diese Übung begrenzt.
Das separate Beispiel ausführen
Begriff · Kontext
Die begrenzte Information, auf deren Grundlage ein System arbeitet. Dazu gehören Herkunft, Aktualität, Widersprüche und Rechte.
Öffnen Sie die Entwicklerkonsole eines Browsers in einem sicheren Kontext und führen Sie das Beispiel aus. TextEncoder erzeugt die UTF-8-Bytes; die Web-Crypto-Schnittstelle berechnet daraus den SHA-256-Prüfwert. Die letzte Zeile gibt den Wert als hexadezimale Zeichenfolge aus. Führen Sie denselben Code zweimal aus und vergleichen Sie die Ausgaben. Eine identische Eingabe muss denselben Prüfwert liefern. Das Beispiel sendet keine Daten an einen SnapSite-Dienst.
Eine einzige Abweichung sichtbar machen
- Kopieren Sie die erste Ausgabe als Vergleichswert.
- Ändern Sie „vorbereitet“ zu „geprüft“ und berechnen Sie erneut.
- Stellen Sie den Ausgangstext wieder her und wiederholen Sie die Rechnung.
- Vergleichen Sie die Werte und prüfen Sie auch eine zusätzliche Leerstelle in der Eingabe.
Die Übung zeigt die Bedeutung exakter Bytes. Sie definiert weder ein Freigabeformat noch eine Verknüpfung mehrerer Einträge.
Rechenfehler und Integritätsbefund trennen
Wenn die Kryptografie-Schnittstelle nicht verfügbar ist, ist noch kein Protokollfehler nachgewiesen. Prüfen Sie zuerst Browser und sicheren Ausführungskontext. Weichen zwei Werte ab, vergleichen Sie Eingabe, Zeichenkodierung und unsichtbare Zeichen vor jeder fachlichen Schlussfolgerung. Ein passender Hash bestätigt nur die Übereinstimmung mit dem vorliegenden Vergleichswert. Wer auch diesen Vergleichswert ändern kann, kann die Aussage entwerten. Für historische Integrität braucht der geplante Betrieb einen unabhängig verwahrten Stand.
Übung
const input = JSON.stringify(["Objekt", "vorbereitet"]);
const bytes = new TextEncoder().encode(input);
const digest = await crypto.subtle.digest("SHA-256", bytes);
const hex = Array.from(new Uint8Array(digest))
.map(value => value.toString(16).padStart(2, "0"))
.join("");
console.log({ input, hex });Grenze
- Grenze
- Der Code ist eine reproduzierbare SHA-256-Übung im Browser. Er kann keine echten Prototyp-Einträge validieren, weil deren exakter Serialisierungsvertrag hier nicht spezifiziert ist.
Quellen
- W3C: Web Cryptography API, digestWeb-verifizierte Primärquelle für digest und SHA-256. Die veröffentlichte zweite Fassung ist ein Arbeitsentwurf; das Beispiel nutzt die etablierte digest-Operation.
- WHATWG: Encoding Standard, TextEncoderWeb-verifizierte Primärquelle: TextEncoder kodiert Zeichenketten als UTF-8.
- NIST FIPS 180-4: Secure Hash StandardWeb-verifizierte Primärquelle für die SHA-256-Hashfunktion; kein Nachweis der SnapSite-Implementierung.