Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Januar 2020 browserübergreifend verfügbar.
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 unwrapKey()-Methode des SubtleCrypto-Interfaces "entpackt" einen Schlüssel. Dies bedeutet, dass sie einen Schlüssel als Eingabe annimmt, der exportiert und dann verschlüsselt wurde (auch als "eingepackt" bezeichnet). Sie entschlüsselt den Schlüssel und importiert ihn dann, wodurch ein CryptoKey-Objekt zurückgegeben wird, das in der Web Crypto API verwendet werden kann.
Wie bei SubtleCrypto.importKey() geben Sie das Importformat des Schlüssels und andere Attribute des Schlüssels an, um Details wie z.B. ob er extrahierbar ist und für welche Operationen er verwendet werden kann, zu importieren.
Da unwrapKey() jedoch auch den zu importierenden Schlüssel entschlüsselt, müssen Sie auch den Schlüssel übergeben, der zum Entschlüsseln verwendet werden soll. Dies wird manchmal als "Entschlüsselungsschlüssel" bezeichnet.
Das Gegenteil von unwrapKey() ist SubtleCrypto.wrapKey(): Während unwrapKey aus Entschlüsseln + Import besteht, besteht wrapKey aus Verschlüsseln + Export.
Ein String, der das Datenformat des zu entpackenden Schlüssels beschreibt. Es kann einer der folgenden sein:
Ein ArrayBuffer, der den eingepackten Schlüssel im angegebenen Format enthält.
unwrappingKeyDer CryptoKey, der zur Entschlüsselung des eingepackten Schlüssels verwendet werden soll. Der Schlüssel muss die unwrapKey-Verwendung gesetzt haben.
unwrapAlgoEin Objekt, das den zu verwendenden Algorithmus zur Entschlüsselung des eingepackten Schlüssels angibt sowie alle erforderlichen zusätzlichen Parameter:
Ein Objekt, das den Typ des zu entpackenden Schlüssels definiert und zusätzliche algorithmusspezifische Parameter bereitstellt.
Ein boolescher Wert, der angibt, ob es möglich sein wird, den Schlüssel mit SubtleCrypto.exportKey() oder SubtleCrypto.wrapKey() zu exportieren.
keyUsagesEin Array, das angibt, was mit dem Schlüssel gemacht werden kann. Mögliche Werte des Arrays sind:
Ein Promise, das mit dem entpackten Schlüssel als CryptoKey-Objekt erfüllt wird.
Das Promise wird zurückgewiesen, wenn eine der folgenden Ausnahmen auftritt:
InvalidAccessError DOMExceptionWird ausgelöst, wenn der Entschlüsselungsschlüssel kein Schlüssel für den angeforderten Entschlüsselungsalgorithmus ist oder wenn der keyUsages-Wert dieses Schlüssels nicht unwrap enthält.
NotSupported DOMExceptionWird ausgelöst, wenn versucht wird, einen Algorithmus zu verwenden, der entweder unbekannt oder nicht zur Verschlüsselung oder Verpackung geeignet ist.
SyntaxError DOMExceptionWird ausgelöst, wenn keyUsages leer ist, aber der entpackte Schlüssel vom Typ secret oder private ist.
TypeErrorWird ausgelöst, wenn versucht wird, ein ungültiges Format zu verwenden.
Die unwrapKey()-Methode unterstützt die gleichen Algorithmen wie die wrapKey()-Methode.
Hinweis: Sie können die funktionierenden Beispiele auf GitHub ausprobieren.
In diesem Beispiel entpacken wir einen AES-GCM-symmetrischen Schlüssel. Der Schlüssel wurde im "Roh"-Format exportiert und mit dem AES-KW-Algorithmus verschlüsselt, wobei ein aus einem Passwort abgeleiteter Schlüssel verwendet wurde.
Um zu entpacken, bitten wir den Benutzer um das Passwort und verwenden PBKDF2 und etwas Salt, um den AES-KW-Entpackungsschlüssel abzuleiten. Das Salt muss das gleiche sein wie das Salt, das zur Ableitung des ursprünglichen AES-KW-Schlüsselverpackungsschlüssels verwendet wurde.
Sobald wir den Entpackungsschlüssel haben, übergeben wir ihn zusammen mit dem eingepackten Schlüssel und anderen Parametern an unwrapKey(). Sehen Sie den kompletten Code auf GitHub.
In diesem Beispiel entpacken wir einen RSA-PSS privaten Signaturschlüssel. Der Schlüssel wurde im "pkcs8"-Format exportiert und mit dem AES-GCM-Algorithmus verschlüsselt, wobei ein aus einem Passwort abgeleiteter Schlüssel verwendet wurde.
Um zu entpacken, bitten wir den Benutzer um das Passwort und verwenden PBKDF2 und etwas Salt, um den AES-GCM-Entpackungsschlüssel abzuleiten. Das Salt muss das gleiche sein wie das Salt, das zur Ableitung des ursprünglichen AES-GCM-Schlüsselverpackungsschlüssels verwendet wurde.
Sobald wir den Entpackungsschlüssel haben, übergeben wir ihn zusammen mit dem eingepackten Schlüssel und anderen Parametern an unwrapKey(). Beachten Sie, dass wir beim Verwenden von AES-GCM den iv-Wert in unwrapKey() übergeben müssen, und dieser muss derselbe sein wie der iv, der in der entsprechenden wrapKey()-Operation verwendet wurde. Sehen Sie den kompletten Code auf GitHub.
| Web Cryptography Level 2 # SubtleCrypto-method-unwrapKey |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.