| Hash data (integrity, not passwords) |
crypto.subtle.digest("SHA-256", data) |
| Generate a random symmetric key |
crypto.subtle.generateKey({name:"AES-GCM", length:256}, ...) |
| Encrypt/decrypt with a symmetric key |
crypto.subtle.encrypt/decrypt({name:"AES-GCM", iv}, key, data) |
| Derive a key from a password |
crypto.subtle.deriveKey({name:"PBKDF2", salt, iterations, hash}, ...) |
| Generate cryptographically secure randomness |
crypto.getRandomValues(new Uint8Array(n)) — never Math.random() for security |
| Sign/verify (authenticity) |
crypto.subtle.sign/verify({name:"ECDSA", hash:"SHA-256"}, key, data) |
| Generate a UUID |
crypto.randomUUID() |