Movatterモバイル変換


[0]ホーム

URL:


  1. 面向开发者的 Web 技术
  2. Web API
  3. SubtleCrypto
  4. SubtleCrypto.generateKey()

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in EnglishAlways switch to English

SubtleCrypto.generateKey()

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2020年1月⁩.

* Some parts of this feature may have varying levels of support.

安全上下文: 此特性仅在一些支持的浏览器安全上下文(HTTPS)中可用。

SubtleCrypto 接口的generateKey() 方法用于生成新的密钥(用于对称加密算法)或密钥对(用于非对称加密算法)。

语法

js
generateKey(algorithm, extractable, keyUsages)

参数

algorithm

一个对象,用于定义要生成的算法类型,并提供所需的参数。

extractable

一个布尔值,表示生成的密钥是否可被SubtleCrypto.exportKey()SubtleCrypto.wrapKey() 方法导出。

keyUsages

一个数组,表示生成出来的密钥可被用于做什么,数组元素可能的值有:

返回值

一个Promise,会兑现为CryptoKey(用于对称加密算法)或CryptoKeyPair(用于非对称加密算法)。

异常

当发生以下几种异常时,promise 会被拒绝:

SyntaxErrorDOMException

当结果是类型为secretprivate加密密钥,但keyUsages 参数为空时触发。

SyntaxErrorDOMException

当结果是加密密钥对,但它的privateKey.usages 属性为空时触发。

示例

备注:你可以在 Github 上尝试可用的示例

生成 RSA 密钥对

以下代码生成 RSA-OAEP 加密密钥对。在 GitHub 上查看完整代码。

js
let keyPair = await window.crypto.subtle.generateKey(  {    name: "RSA-OAEP",    modulusLength: 4096,    publicExponent: new Uint8Array([1, 0, 1]),    hash: "SHA-256",  },  true,  ["encrypt", "decrypt"],);

生成椭圆曲线密钥对

以下代码生成 ECDSA 签名密钥对。在 GitHub 上查看完整代码。

js
let keyPair = await window.crypto.subtle.generateKey(  {    name: "ECDSA",    namedCurve: "P-384",  },  true,  ["sign", "verify"],);

生成 HMAC 密钥

以下代码生成 HMAC 签名密钥。在 GitHub 上查看完整代码。

js
let key = await window.crypto.subtle.generateKey(  {    name: "HMAC",    hash: { name: "SHA-512" },  },  true,  ["sign", "verify"],);

生成 AES 密钥

以下代码生成 AES-GCM 加密密钥。在 GitHub 上查看完整代码。

js
let key = await window.crypto.subtle.generateKey(  {    name: "AES-GCM",    length: 256,  },  true,  ["encrypt", "decrypt"],);

规范

Specification
Web Cryptography Level 2
# SubtleCrypto-method-generateKey

浏览器兼容性

参见

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp