- Assertion testing
- Asynchronous context tracking
- Async hooks
- Buffer
- C++ addons
- C/C++ addons with Node-API
- C++ embedder API
- Child processes
- Cluster
- Command-line options
- Console
- Corepack
- Crypto
- Debugger
- Deprecated APIs
- Diagnostics Channel
- DNS
- Domain
- Errors
- Events
- File system
- Globals
- HTTP
- HTTP/2
- HTTPS
- Inspector
- Internationalization
- Modules: CommonJS modules
- Modules: ECMAScript modules
- Modules: node:moduleAPI
- Modules: Packages
- Net
- OS
- Path
- Performance hooks
- Permissions
- Process
- Punycode
- Query strings
- Readline
- REPL
- Report
- Stream
- String decoder
- Test runner
- Timers
- TLS/SSL
- Trace events
- TTY
- UDP/datagram
- URL
- Utilities
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- Worker threads
- Zlib
Node.js v18.12.1 documentation
- Node.js v18.12.1
- 
►         Table of contents        
- Web Crypto API - Examples
- Algorithm matrix
- Class: Crypto
- Class: CryptoKey
- Class: CryptoKeyPair
- Class: SubtleCrypto- subtle.decrypt(algorithm, key, data)
- subtle.deriveBits(algorithm, baseKey, length)
- subtle.deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages)
- subtle.digest(algorithm, data)
- subtle.encrypt(algorithm, key, data)
- subtle.exportKey(format, key)
- subtle.generateKey(algorithm, extractable, keyUsages)
- subtle.importKey(format, keyData, algorithm, extractable, keyUsages)
- subtle.sign(algorithm, key, data)
- subtle.unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgo, unwrappedKeyAlgo, extractable, keyUsages)
- subtle.verify(algorithm, key, signature, data)
- subtle.wrapKey(format, key, wrappingKey, wrapAlgo)
 
- Algorithm parameters - Class: AlgorithmIdentifier
- Class: AesCbcParams
- Class: AesCtrParams
- Class: AesGcmParams
- Class: AesKeyGenParams
- Class: EcdhKeyDeriveParams
- Class: EcdsaParams
- Class: EcKeyGenParams
- Class: EcKeyImportParams
- Class: Ed448Params
- Class: HkdfParams
- Class: HmacImportParams
- Class: HmacKeyGenParams
- Class: Pbkdf2Params
- Class: RsaHashedImportParams
- Class: RsaHashedKeyGenParams
- Class: RsaOaepParams
- Class: RsaPssParams
 
- Class: 
 
 
- Web Crypto API 
- 
►         Index        
 - Assertion testing
- Asynchronous context tracking
- Async hooks
- Buffer
- C++ addons
- C/C++ addons with Node-API
- C++ embedder API
- Child processes
- Cluster
- Command-line options
- Console
- Corepack
- Crypto
- Debugger
- Deprecated APIs
- Diagnostics Channel
- DNS
- Domain
- Errors
- Events
- File system
- Globals
- HTTP
- HTTP/2
- HTTPS
- Inspector
- Internationalization
- Modules: CommonJS modules
- Modules: ECMAScript modules
- Modules: node:moduleAPI
- Modules: Packages
- Net
- OS
- Path
- Performance hooks
- Permissions
- Process
- Punycode
- Query strings
- Readline
- REPL
- Report
- Stream
- String decoder
- Test runner
- Timers
- TLS/SSL
- Trace events
- TTY
- UDP/datagram
- URL
- Utilities
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- Worker threads
- Zlib
 
 
- ► Other versions
- ► Options
Table of contents
- Web Crypto API - Examples
- Algorithm matrix
- Class: Crypto
- Class: CryptoKey
- Class: CryptoKeyPair
- Class: SubtleCrypto- subtle.decrypt(algorithm, key, data)
- subtle.deriveBits(algorithm, baseKey, length)
- subtle.deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages)
- subtle.digest(algorithm, data)
- subtle.encrypt(algorithm, key, data)
- subtle.exportKey(format, key)
- subtle.generateKey(algorithm, extractable, keyUsages)
- subtle.importKey(format, keyData, algorithm, extractable, keyUsages)
- subtle.sign(algorithm, key, data)
- subtle.unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgo, unwrappedKeyAlgo, extractable, keyUsages)
- subtle.verify(algorithm, key, signature, data)
- subtle.wrapKey(format, key, wrappingKey, wrapAlgo)
 
- Algorithm parameters - Class: AlgorithmIdentifier
- Class: AesCbcParams
- Class: AesCtrParams
- Class: AesGcmParams
- Class: AesKeyGenParams
- Class: EcdhKeyDeriveParams
- Class: EcdsaParams
- Class: EcKeyGenParams
- Class: EcKeyImportParams
- Class: Ed448Params
- Class: HkdfParams
- Class: HmacImportParams
- Class: HmacKeyGenParams
- Class: Pbkdf2Params
- Class: RsaHashedImportParams
- Class: RsaHashedKeyGenParams
- Class: RsaOaepParams
- Class: RsaPssParams
 
- Class: 
 
Web Crypto API#
Stability: 1 - Experimental实验性的
Node.js provides an implementation of the standard Web Crypto API.Node.js提供了标准Web Crypto API的实现。
Use 使用require('node:crypto').webcrypto to access this module.require('node:crypto').webcrypto访问此模块。
const { subtle } = require('node:crypto').webcrypto;
(async function() {
  const key = await subtle.generateKey({
    name: 'HMAC',
    hash: 'SHA-256',
    length: 256
  }, true, ['sign', 'verify']);
  const enc = new TextEncoder();
  const message = enc.encode('I love cupcakes');
  const digest = await subtle.sign({
    name: 'HMAC'
  }, key, message);
})();