AesCtrParams

AesCtrParams 字典是 Web Crypto API 的一部分,当使用 AES-CTR 算法时,它代表应作为 algorithm 参数传递给 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 的对象。

AES 是一种分组密码,意味着它将消息分割成块,一次加密一个块。在 CTR 模式下,每次加密一个消息块时,都会混合进一个额外的数据块。这个额外的数据块称为“计数器块”。

给定的计数器块值绝不能与同一个密钥重复使用一次以上。

  • 给定一个长度为 n 个块的消息,每个块必须使用不同的计数器块。
  • 如果同一个密钥用于加密多个消息,那么在所有消息的所有块中都必须使用不同的计数器块。

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

  • 一个 nonce(即,只能使用一次的数字)。nonce 部分在消息的每个块中都保持不变。每次要加密新消息时,都会选择一个新的 nonce。Nonce 不需要保密,但不能与同一个密钥重复使用。
  • 一个计数器。这个部分在每次加密块时都会递增。

本质上:nonce 应确保计数器块不会在消息之间重复使用,而计数器应确保计数器块不会在单个消息内重复使用。

注意: 有关更多信息,请参阅 NIST SP800-38A 标准的附录 B

实例属性

name

一个字符串。应将其设置为 AES-CTR

counter

一个 ArrayBuffer、一个 TypedArray 或一个 DataView — 计数器块的初始值。必须为 16 字节长(AES 块大小)。此块的右侧 length 位用于计数器,其余部分用于 nonce。例如,如果 length 设置为 64,则 counter 的前半部分是 nonce,后半部分用于计数器。

length

一个 Number — 用于实际计数器的计数器块中的位数。计数器必须足够大,以避免溢出:如果消息是 n 个块,计数器是 m 位长,那么必须满足以下条件:n <= 2^m。定义 CTR 的 NIST SP800-38A 标准建议计数器应占据计数器块的一半(请参阅 附录 B.2),因此对于 AES,它将是 64。

示例

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

规范

规范
Web 加密级别 2
# dfn-AesCtrParams

浏览器兼容性

支持在 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 方法中使用“AES-CTR”算法的浏览器将支持此类型。

另见