Zum Inhalt springen

Web Crypto API

Zufallswerte, UUIDs, Schlüssel und kryptografische Operationen

Auf dieser Seite
Open in ChatGPTOpen in Claude

Das globale Objekt crypto stellt getRandomValues(typedArray), randomUUID() und crypto.subtle bereit, ein SubtleCrypto, das auf derselben AWS-LC-Implementierung wie node:crypto basiert. Schlüssel sind CryptoKey-Objekte (eine globale Klasse); sie teilen sich das Schlüsselmaterial mit KeyObject, sodass KeyObject.from(cryptoKey) und keyObject.toCryptoKey() ohne Kopieren konvertieren. util.types.isCryptoKey() und util.types.isKeyObject() erkennen sie.

OperationAlgorithmen
digestSHA-1, SHA-256, SHA-384, SHA-512, SHA3-256/384/512, cSHAKE128/256 (ohne Funktionsname oder Anpassung)
generateKey, importKey, exportKeyRSASSA-PKCS1-v1_5, RSA-PSS, RSA-OAEP, ECDSA, ECDH (P-256, P-384, P-521), Ed25519, X25519, HMAC, AES-CTR/CBC/GCM/KW, ChaCha20-Poly1305; HKDF und PBKDF2 nur Import
sign, verifyRSASSA-PKCS1-v1_5, RSA-PSS, ECDSA, Ed25519, HMAC
encrypt, decryptRSA-OAEP, AES-CTR, AES-CBC, AES-GCM, ChaCha20-Poly1305
wrapKey, unwrapKeyAES-KW und jeder encrypt/decrypt-Algorithmus
deriveBits, deriveKeyECDH, X25519, HKDF, PBKDF2
getPublicKey, SubtleCrypto.supportswie in Node (experimentell)

Schlüsselformate sind raw (und die Aliase raw-public/raw-secret), spki, pkcs8 und jwk.

const key = await crypto.subtle.generateKey(
  { name: "AES-GCM", length: 256 },
  true,
  ["encrypt", "decrypt"],
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const sealed = await crypto.subtle.encrypt(
  { name: "AES-GCM", iv },
  key,
  new TextEncoder().encode("hello"),
);

Validierung, Fehlernamen und Meldungen folgen Node. Elide verhält sich wie ein Build auf Basis von BoringSSL, daher sind Algorithmen, die Node nur unter OpenSSL 3 anbietet, nicht verfügbar: Ed448, X448, AES-OCB, KMAC, Argon2, ML-DSA, ML-KEM, TurboSHAKE und KangarooTwelve werden mit NotSupportedError abgelehnt.

Reference

Status: Full · Not measured · since 1.1.0

Exports

ExportKindStatusNotes
cryptoobjectFullrandomUUID(), getRandomValues(), subtle
SubtleCryptoclassFulldigest(), encrypt(), decrypt(), sign(), verify(), generateKey(), importKey(), exportKey(), deriveBits(), deriveKey(), wrapKey(), unwrapKey()

War diese Seite hilfreich?