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”算法的浏览器将支持此类型。
另见
- CTR 模式定义在 NIST SP800-38A 标准的第 6.5 节。
SubtleCrypto.encrypt().SubtleCrypto.decrypt().SubtleCrypto.wrapKey().SubtleCrypto.unwrapKey().