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
-
一个
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 密码学 API # 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()
.