菜单
开源

generateKey

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

使用

generateKey(algorithm, extractable, keyUsages)

参数

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

支持的算法

注意

实验模块 k6/experimental/webcrypto 已经升级,其功能现在可以通过 crypto 对象全局使用。k6/experimental/webcrypto 已被弃用,并将在不久的将来移除。

要迁移您的脚本,请移除 k6/experimental/webcrypto 导入,并改用 crypto 对象。

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
import { crypto } from 'k6/experimental/webcrypto';

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

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