SubtleCrypto: digest() Methode
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die digest()
Methode des SubtleCrypto
-Interfaces erzeugt einen Digest der gegebenen Daten. Ein Digest ist ein kurzer, fester Wert, der aus einer variablen Eingabe abgeleitet wird. Kryptografische Digests sollten kollisionsresistent sein, was bedeutet, dass es schwierig ist, zwei verschiedene Eingaben zu finden, die den gleichen Digest-Wert haben.
Sie nimmt als Argumente einen Bezeichner für den zu verwendenden Digest-Algorithmus und die zu verdauenden Daten. Sie gibt ein Promise
zurück, das mit dem Digest erfüllt wird.
Beachten Sie, dass diese API kein Streaming von Eingaben unterstützt: Sie müssen die gesamte Eingabe in den Speicher laden, bevor Sie sie in die Digest-Funktion übergeben.
Syntax
digest(algorithm, data)
Parameter
algorithm
-
Dies kann eine Zeichenfolge oder ein Objekt mit einer einzigen Eigenschaft
name
sein, die eine Zeichenfolge ist. Die Zeichenfolge benennt die zu verwendende Hash-Funktion. Unterstützte Werte sind:"SHA-1"
(aber verwenden Sie dies nicht in kryptografischen Anwendungen)"SHA-256"
"SHA-384"
"SHA-512"
.
data
-
Ein
ArrayBuffer
, einTypedArray
oder einDataView
-Objekt, das die zu verdauenden Daten enthält.
Rückgabewert
Ein Promise
, das mit einem ArrayBuffer
erfüllt wird, der den Digest enthält.
Unterstützte Algorithmen
Digest-Algorithmen, auch bekannt als kryptografische Hash-Funktionen, verwandeln einen beliebig großen Datenblock in eine Ausgabe fester Größe, die normalerweise viel kürzer als die Eingabe ist. Sie haben eine Vielzahl von Anwendungen in der Kryptografie.
Algorithmus | Ausgabelänge (Bits) | Blockgröße (Bits) | Spezifikation |
---|---|---|---|
SHA-1 | 160 | 512 | FIPS 180-4, Abschnitt 6.1 |
SHA-256 | 256 | 512 | FIPS 180-4, Abschnitt 6.2 |
SHA-384 | 384 | 1024 | FIPS 180-4, Abschnitt 6.5 |
SHA-512 | 512 | 1024 | FIPS 180-4, Abschnitt 6.4 |
Warnung: SHA-1 gilt mittlerweile als unsicher und sollte nicht für kryptografische Anwendungen verwendet werden.
Hinweis: Wenn Sie wissen möchten, wie man einen Keyed-Hash-Message-Authentication-Code (HMAC) erstellt, müssen Sie stattdessen SubtleCrypto.sign() verwenden.
Beispiele
Für weitere Beispiele zur Verwendung der digest()
-API, siehe Nicht-kryptografische Verwendungen von SubtleCrypto.
Einfaches Beispiel
Dieses Beispiel kodiert eine Nachricht, berechnet dann deren SHA-256 Digest und protokolliert die Länge des Digests:
const text =
"An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.";
async function digestMessage(message) {
const encoder = new TextEncoder();
const data = encoder.encode(message);
const hash = await window.crypto.subtle.digest("SHA-256", data);
return hash;
}
digestMessage(text).then((digestBuffer) =>
console.log(digestBuffer.byteLength),
);
Konvertieren eines Digests in einen Hex-String
Der Digest wird als ArrayBuffer
zurückgegeben, aber für den Vergleich und die Anzeige werden Digests oft als Hexstrings dargestellt. Dieses Beispiel berechnet einen Digest und konvertiert dann den ArrayBuffer
in einen Hex-String:
const text =
"An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.";
async function digestMessage(message) {
const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
const hashBuffer = await window.crypto.subtle.digest("SHA-256", msgUint8); // hash the message
const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array
const hashHex = hashArray
.map((b) => b.toString(16).padStart(2, "0"))
.join(""); // convert bytes to hex string
return hashHex;
}
digestMessage(text).then((digestHex) => console.log(digestHex));
Spezifikationen
Specification |
---|
Web Cryptography API # SubtleCrypto-method-digest |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Nicht-kryptografische Verwendungen von SubtleCrypto
- Chromium secure origins specification
- FIPS 180-4 spezifiziert die SHA-Familie von Digest-Algorithmen.