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().