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: Diese Funktion ist in Web Workers verfügbar.
Die digest()
Methode der SubtleCrypto
Schnittstelle erzeugt einen Digest der gegebenen Daten, unter Verwendung der spezifizierten Hash-Funktion.
Ein Digest ist ein kurzer, festgelegter Wert, der aus einer variablen Länge der Eingabe abgeleitet wird.
Kryptografische Digests sollten Kollisionsresistenz aufweisen, was bedeutet, dass es schwierig ist, zwei verschiedene Eingaben zu finden, die denselben Digest-Wert haben.
Sie nimmt als Argumente eine Kennung für den zu verwendenden Digest-Algorithmus und die zu digestenden Daten. Sie gibt ein Promise
zurück, das mit dem Digest erfüllt wird.
Beachten Sie, dass diese API keinen Streaming-Input 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 ein String oder ein Objekt mit einer einzigen Eigenschaft
name
sein, die ein String ist. Der String 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 digestenden 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 Hash-Funktionen, wandeln einen beliebig großen Datenblock in eine Ausgabe fester Größe um, die üblicherweise viel kürzer ist als die Eingabe. 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 wird jetzt als unsicher angesehen und sollte nicht für kryptografische Anwendungen verwendet werden.
Hinweis: Wenn Sie hier nach einer Anleitung zur Erstellung eines Keyed-Hash Message Authentication Code (HMAC) suchen, müssen Sie stattdessen SubtleCrypto.sign() verwenden.
Beispiele
Für mehr Beispiele zur Verwendung der digest()
API, siehe Nicht-kryptografische Anwendungen von SubtleCrypto.
Einfaches Beispiel
Dieses Beispiel kodiert eine Nachricht, berechnet dann ihren SHA-256-Digest und protokolliert die Digest-Länge:
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),
);
Umwandlung 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 Hex-Strings dargestellt. Dieses Beispiel berechnet einen Digest und wandelt dann den ArrayBuffer
in einen Hex-String um:
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
Siehe auch
- Nicht-kryptografische Anwendungen von SubtleCrypto
- Chromium sicherer Ursprungsspezifikation
- FIPS 180-4 spezifiziert die SHA-Familie der Digest-Algorithmen.