一 什麼是CTR模式
CTR模式全稱CounTeR模式(計數器模式)。CTR模式是一種通過将逐次累加的計數器進行加密來生成密鑰流的流密碼。

CTR模式中,每個分組對應一個逐次累加的計數器,并通過對計數器進行加密來生成密鑰流。也就是說,最終的密文分組是通過将計數器加密而得到的比特序列,與明文分組進行XOR而得到的。
二 計數器的生成方法
每次加密時都會生成一個不同的值(nonce)作為計數器的初始值。當分組長度為128比特時,計數器的初始值可能如下圖所示:
加密過程中,計數器的值會産生如下變化:
三 OFB模式與CTR模式的對比
CTR模式和OFB模式都屬于流密碼。
OFB模式是将加密的輸出回報到輸入,而CTR模式則是将計數器的值用作輸入。
四 CTR模式的特點
CTR模式的加密和解密使用了完全相同的模式,是以在程式上實作上比較容易。
CTR模式中可以以任意順序對分組進行加密和解密,因為在加密和解密時需要用到的“計數器”的值可以由nonce和分組序号直接計算出來。
能夠以任意順序處理分組,意味着能夠實作并行計算。在支援并行計算的系統中,CTR模式的速度是非常快的。
五 錯誤與機密性
假設CTR模式的密文分組中有一個比特被反轉了,則解密後明文分組中僅有與之對應的比特會被反轉,這一錯誤不會放大。
主動攻擊者可以通過反轉密文分組中的某些比特,引起解密後明文中的相應比特也發生反轉。
CTR模式中,如果對密鑰流的一個分組進行加密後碰巧和加密前是相同的,那麼這個分組之後的密鑰流就會變成同一值的不斷反複,這個在CTR中不存在這一問題。