SubtleCrypto: decrypt()-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 decrypt()
-Methode des SubtleCrypto
-Interfaces entschlüsselt einige verschlüsselte Daten.
Sie nimmt als Argumente einen Schlüssel zum Entschlüsseln, einige optionale zusätzliche Parameter und die zu entschlüsselnden Daten (auch bekannt als "Chiffretext").
Sie gibt ein Promise
zurück, das mit den entschlüsselten Daten (auch bekannt als "Klartext") erfüllt wird.
Syntax
decrypt(algorithm, key, data)
Parameter
algorithm
-
Ein Objekt, das den zu verwendenden Algorithmus und alle erforderlichen zusätzlichen Parameter angibt. Die angegebenen Werte für die zusätzlichen Parameter müssen mit denen übereinstimmen, die beim entsprechenden
encrypt()
-Aufruf übergeben wurden.- Um RSA-OAEP zu verwenden, übergeben Sie ein
RsaOaepParams
-Objekt. - Um AES-CTR zu verwenden, übergeben Sie ein
AesCtrParams
-Objekt. - Um AES-CBC zu verwenden, übergeben Sie ein
AesCbcParams
-Objekt. - Um AES-GCM zu verwenden, übergeben Sie ein
AesGcmParams
-Objekt.
- Um RSA-OAEP zu verwenden, übergeben Sie ein
key
-
Ein
CryptoKey
, der den zu verwendenden Schlüssel für die Entschlüsselung enthält. Bei Verwendung von RSA-OAEP ist dies dieprivateKey
-Eigenschaft desCryptoKeyPair
-Objekts. data
-
Ein
ArrayBuffer
, einTypedArray
oder einDataView
, das die zu entschlüsselnden Daten enthält (auch bekannt als Chiffretext).
Rückgabewert
Ein Promise
, das mit einem ArrayBuffer
erfüllt wird, der den Klartext enthält.
Ausnahmen
Das Promise wird abgelehnt, wenn die folgenden Ausnahmen auftreten:
InvalidAccessError
DOMException
-
Wird ausgelöst, wenn die angeforderte Operation für den bereitgestellten Schlüssel nicht gültig ist (z. B. ungültiger Verschlüsselungsalgorithmus oder ungültiger Schlüssel für den angegebenen Verschlüsselungsalgorithmus).
OperationError
DOMException
-
Wird ausgelöst, wenn die Operation aus einem operationsspezifischen Grund fehlgeschlagen ist (z. B. Algorithmusparameter ungültiger Größen oder es gab einen Fehler beim Entschlüsseln des Chiffretexts).
Unterstützte Algorithmen
Die decrypt()
-Methode unterstützt dieselben Algorithmen wie die encrypt()
-Methode.
Beispiele
Hinweis: Sie können die funktionierenden Beispiele auf GitHub ausprobieren.
RSA-OAEP
Dieser Code entschlüsselt ciphertext
mit RSA-OAEP. Sehen Sie den vollständigen Code auf GitHub.
function decryptMessage(privateKey, ciphertext) {
return window.crypto.subtle.decrypt(
{ name: "RSA-OAEP" },
privateKey,
ciphertext,
);
}
AES-CTR
Dieser Code entschlüsselt ciphertext
mit AES im CTR-Modus.
Beachten Sie, dass counter
mit dem Wert übereinstimmen muss, der für die Verschlüsselung verwendet wurde. Sehen Sie den vollständigen Code auf GitHub.
function decryptMessage(key, ciphertext) {
return window.crypto.subtle.decrypt(
{ name: "AES-CTR", counter, length: 64 },
key,
ciphertext,
);
}
AES-CBC
Dieser Code entschlüsselt ciphertext
mit AES im CBC-Modus. Beachten Sie, dass
iv
mit dem Wert übereinstimmen muss, der für die Verschlüsselung verwendet wurde. Sehen Sie den vollständigen Code auf GitHub.
function decryptMessage(key, ciphertext) {
// The iv value is the same as that used for encryption
return window.crypto.subtle.decrypt({ name: "AES-CBC", iv }, key, ciphertext);
}
AES-GCM
Dieser Code entschlüsselt ciphertext
mit AES im GCM-Modus. Beachten Sie, dass
iv
mit dem Wert übereinstimmen muss, der für die Verschlüsselung verwendet wurde. Sehen Sie den vollständigen Code auf GitHub.
function decryptMessage(key, ciphertext) {
// The iv value is the same as that used for encryption
return window.crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, ciphertext);
}
Spezifikationen
Specification |
---|
Web Cryptography API # SubtleCrypto-method-decrypt |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
SubtleCrypto.encrypt()
.- RFC 3447 spezifiziert RSAOAEP.
- NIST SP800-38A spezifiziert den CTR-Modus.
- NIST SP800-38A spezifiziert den CBC-Modus.
- NIST SP800-38D spezifiziert den GCM-Modus.
- FIPS 198-1 spezifiziert HMAC.