AesCtrParams

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

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

给定的计数器块值对于相同的密钥不能使用超过一次。

  • 对于长度为 *n* 块的消息,必须为每个块使用不同的计数器块。
  • 如果使用相同的密钥加密多条消息,则必须为所有消息中的所有块使用不同的计数器块。

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

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

本质上:nonce 应确保计数器块不会从一条消息重复使用到下一条消息,而计数器应确保计数器块不会在单个消息中重复使用。

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

实例属性

name

一个字符串。这应该设置为 AES-CTR

counter

一个 ArrayBufferTypedArrayDataView - 计数器块的初始值。这必须是 16 字节长(AES 块大小)。此块最右边的 length 位用于计数器,其余部分用于 nonce。例如,如果 length 设置为 64,则 counter 的前半部分是 nonce,后半部分用于计数器。

length

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

示例

规范

规范
Web 密码学 API
# dfn-AesCtrParams

浏览器兼容性

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

另请参阅