菜单
开源

generateKey

generateKey() 生成一个新的加密密钥,并将其作为 CryptoKey 对象或 CryptoKeyPair 对象返回,可与 Web Crypto API 一起使用。

使用方法

generateKey(algorithm, extractable, keyUsages)

参数

名称类型描述
algorithm一个 string 或带有单个 name 字符串的算法对象要生成的密钥类型。它可以是一个字符串,其值是当前支持的任何算法,也可以是生成密钥参数对象中的任何一个。
extractableboolean密钥是否可以使用 exportKey 导出。
keyUsagesArray<string>一个字符串数组,描述密钥可以执行的操作。密钥用法可能因算法而异。

支持的算法

AES-CBCAES-CTRAES-GCMAES-KWECDHECDSAHMACRSA-OAEPRSASSA-PKCS1-v1_5RSA-PSS
AesCbcParamsAesCtrParamsAesGcmParamsEcdhKeyDeriveParamsEcdsaParamsHmacKeyGenParamsRsaHashedImportParamsRsaHashedImportParamsRsaHashedImportParams

返回值

一个 Promise,它以生成的密钥作为 CryptoKey 对象或 CryptoKeyPair 对象解析。

算法特定输入

HMACAESECDHECDSARSA-OAEPRSASSA-PKCS1-v1_5RSA-PSS
要使用的参数类型HmacKeyGenParamsAesKeyGenParamsEcKeyGenParamsEcKeyGenParamsRSAHashedKeyGenParamsRSAHashedKeyGenParamsRSAHashedKeyGenParams
可能的密钥用法sign, verifyencrypt, decryptderiveKey, deriveBitssign, verifyencrypt, decryptsign, verifysign, verify

抛出

类型描述
SyntaxErrorkeyUsages 参数为空,但密钥类型为 secretprivate 时抛出。

示例

JavaScript
export default async function () {
  const key = await crypto.subtle.generateKey(
    {
      name: 'AES-CBC',
      length: 256,
    },
    true,
    ['encrypt', 'decrypt']
  );

  console.log(JSON.stringify(key));
}