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" 算法,则支持该类型。