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”演算法的瀏覽器將支援此型別。

另見