AesCtrParams - 表示使用 AES-CTR 算法的参数
AesCtrParams 是 Web 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" 算法,则支持该类型。