AesCtrParams - 表示使用 AES-CTR 算法的参数

AesCtrParamsWeb Crypto API 的字典,表示当使用 AES-CTR 算法时,应作为 algorithm 参数传递给 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 的对象。

AES 是一种块密码,这意味着它将消息拆分为多个块,并一次将其加密为一个块。在 CTR 模式下,每次加密消息块时,都会混入一个额外的数据块。此额外的块称为 “计数器块”。

给定的计数器块值不得与相同的键重复使用:

  • 给定一个消息为 n 个块长,每个块必须使用不同的计数器块。
  • 如果使用同一密钥来加密多个消息,则必须对所有消息中的所有块使用不同的计数器块。

通常,这是通过将初始计数器块值分成两个串联部分来实现的:

  • 一个 nonce(即,只能使用一次的数字)。该块的随机数部分对于消息中的每个块保持不变。每次要加密新消息时,都会选择一个新的随机数。随机数不必一定是秘密的,但是一定不能被用相同的密钥重用。
  • 一个计数器。每次对块进行加密时,块的这一部分都会增加。

注意:请参阅 NIST SP800-38A 标准附录 B 以获取更多信息。

属性

name

一个 DOMString。它应该设置为 AES-CTR

counter

一个 BufferSource,表示计数器块的初始值。该长度必须为 16 个字节(AES 块大小)。该块最右边的 length 位用于计数器,其余部分用于随机数。例如,如果将 length 设置为 64,则 counter 的前半部分为随机数,后半部分用作计数器。

length

一个 Number,表示计数器块中用于实际计数器的位数。计数器必须足够大以至于不会被封装起来:如果消息为 n 块且计数器为 m 位,则必须满足以下条件:n <= 2m。定义 CTR 的 NIST SP800-38A 标准,建议计数器应占计数器块的一半(请参阅附录 B.2),因此对于 AES,它将是 64。

实例

请参阅 SubtleCrypto.encrypt()SubtleCrypto.decrypt() 的实例。

规范

规范 状态 备注
Web Cryptography API
SubtleCrypto.AesCtrParams 的定义
推荐 -

浏览器兼容性

如果浏览器的 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 方法支持 "AES-CTR" 算法,则支持该类型。

相关链接