Web Crypto API

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 Web Crypto API ist eine Schnittstelle, die es einem Skript ermöglicht, kryptografische Primitive zu nutzen, um Systeme mit Kryptografie zu erstellen.

Einige Browser haben eine Schnittstelle namens Crypto implementiert, ohne sie klar zu definieren oder kryptografisch sicher zu gestalten. Um Verwirrung zu vermeiden, wurden Methoden und Eigenschaften dieser Schnittstelle aus Browsern entfernt, die die Web Crypto API implementieren, und alle Web Crypto API-Methoden sind auf einer neuen Schnittstelle verfügbar: SubtleCrypto. Die Eigenschaft Crypto.subtle gibt Zugriff auf ein Objekt, das diese implementiert.

Warnung: Die Web Crypto API stellt eine Anzahl von niedrigstufigen kryptografischen Primitiven bereit. Diese sind sehr leicht fehlerhaft zu verwenden, und die damit verbundenen Fallstricke können sehr subtil sein.

Selbst wenn Sie die grundlegenden kryptografischen Funktionen korrekt verwenden, ist das sichere Schlüsselmanagement und die Gesamtgestaltung des Sicherheitssystems äußerst schwierig korrekt durchzuführen und ist in der Regel das Gebiet von spezialisierten Sicherheitsexperten.

Fehler bei der Gestaltung und Implementierung des Sicherheitssystems können die Sicherheit des Systems völlig unwirksam machen.

Bitte lernen und experimentieren Sie, aber versichern oder implizieren Sie nicht die Sicherheit Ihrer Arbeit, bevor eine fachkundige Person in diesem Themenbereich sie gründlich überprüft hat. Der Crypto 101 Kurs kann ein guter Ausgangspunkt sein, um über die Gestaltung und Implementierung sicherer Systeme zu lernen.

Schnittstellen

Crypto

Bietet grundlegende kryptografische Funktionen, wie einen kryptografisch starken Zufallszahlengenerator und Zugriff auf kryptografische Primitive über ein SubtleCrypto-Objekt. Ein Objekt dieses Typs kann im globalen Gültigkeitsbereich über Window.crypto oder WorkerGlobalScope.crypto zugegriffen werden.

SubtleCrypto

Stellt ein Objekt dar, das grundlegende kryptografische Funktionen für Schlüsselgenerierung, Verschlüsselung, Entschlüsselung, Schlüsselverpackung und Entpackung usw. bietet.

CryptoKey

Stellt einen kryptografischen Schlüssel dar, der aus einer der Methoden von SubtleCrypto wie generateKey(), deriveKey(), importKey() oder unwrapKey() gewonnen wurde.

Wörterbücher

AesCbcParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.encrypt(), SubtleCrypto.decrypt(), SubtleCrypto.wrapKey() oder SubtleCrypto.unwrapKey() übergeben werden sollte, wenn der AES-CBC-Algorithmus verwendet wird.

AesCtrParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.encrypt(), SubtleCrypto.decrypt(), SubtleCrypto.wrapKey() oder SubtleCrypto.unwrapKey() übergeben werden sollte, wenn der AES-CTR-Algorithmus verwendet wird.

AesGcmParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.encrypt(), SubtleCrypto.decrypt(), SubtleCrypto.wrapKey() oder SubtleCrypto.unwrapKey() übergeben werden sollte, wenn der AES-GCM-Algorithmus verwendet wird.

AesKeyGenParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.generateKey() übergeben werden sollte, wenn ein AES-Schlüssel generiert wird: das heißt, wenn der Algorithmus als einer der AES-CBC, AES-CTR, AES-GCM oder AES-KW identifiziert wird.

CryptoKeyPair

Stellt ein öffentlicher und privater Schlüsselpaar dar, das für einen asymmetrischen Kryptografiealgorithmus verwendet wird.

EcKeyGenParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.generateKey() übergeben werden sollte, wenn ein elliptische-Kurve-basiertes Schlüsselpaar generiert wird: das heißt, wenn der Algorithmus als entweder ECDSA oder ECDH identifiziert wird.

EcKeyImportParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.importKey() oder SubtleCrypto.unwrapKey() übergeben werden sollte, wenn ein elliptische-Kurve-basiertes Schlüsselpaar generiert wird: das heißt, wenn der Algorithmus als entweder ECDSA oder ECDH identifiziert wird.

EcdhKeyDeriveParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.deriveKey() übergeben werden sollte, wenn der ECDH-Algorithmus verwendet wird.

EcdsaParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.sign() oder SubtleCrypto.verify() übergeben werden sollte, wenn der ECDSA-Algorithmus verwendet wird.

HkdfParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.deriveKey() übergeben werden sollte, wenn der HKDF-Algorithmus verwendet wird.

HmacImportParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.importKey() oder SubtleCrypto.unwrapKey() übergeben werden sollte, wenn ein Schlüssel für den HMAC-Algorithmus generiert wird.

HmacKeyGenParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.generateKey() übergeben werden sollte, wenn ein Schlüssel für den HMAC-Algorithmus generiert wird.

Pbkdf2Params

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.deriveKey() übergeben werden sollte, wenn der PBKDF2-Algorithmus verwendet wird.

RsaHashedImportParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.importKey() oder SubtleCrypto.unwrapKey() übergeben werden sollte, wenn jedes RSA-basierte Schlüsselpaar importiert wird: das heißt, wenn der Algorithmus als einer der RSASSA-PKCS1-v1_5, RSA-PSS oder RSA-OAEP identifiziert wird.

RsaHashedKeyGenParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.generateKey() übergeben werden sollte, wenn jedes RSA-basierte Schlüsselpaar generiert wird: das heißt, wenn der Algorithmus als einer der RSASSA-PKCS1-v1_5, RSA-PSS oder RSA-OAEP identifiziert wird.

RsaOaepParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.encrypt(), SubtleCrypto.decrypt(), SubtleCrypto.wrapKey() oder SubtleCrypto.unwrapKey() übergeben werden sollte, wenn der RSA_OAEP-Algorithmus verwendet wird.

RsaPssParams

Stellt das Objekt dar, das als algorithm-Parameter in SubtleCrypto.sign() oder SubtleCrypto.verify() übergeben werden sollte, wenn der RSA-PSS-Algorithmus verwendet wird.

Erweiterungen zu anderen Schnittstellen

Window.crypto

Stellt das Crypto-Objekt dar, das mit dem globalen Objekt im Hauptthread-Bereich assoziiert ist.

WorkerGlobalScope.crypto

Stellt das Crypto-Objekt dar, das mit dem globalen Objekt im Worker-Bereich assoziiert ist.

Spezifikationen

Specification
Web Cryptography API
# crypto-interface

Browser-Kompatibilität

BCD tables only load in the browser