暗号利用モード
C j = P j ⊕ O j {\displaystyle C_{j}=P_{j}\oplus O_{j}}
O j = E K ( I j ) {\displaystyle O_{j}=\ E_{K}(I_{j})}
I j = O j − 1 {\displaystyle I_{j}=\ O_{j-1}}
I 0 = IV {\displaystyle I_{0}=\ {\mbox{IV}}}


各々の操作はそれ以前のすべての操作に依存していることから、暗号化、復号ともに処理の並列化は不可能である。しかし、平文あるいは暗号文は各操作の最後のXORにのみ用いられることから、ブロック暗号による操作を先行して処理しておき、XORのみを最後に連続して行うことは可能である。
入力として0が連続する文字列を定数としてCBCモードを使用することでOFBモードの鍵ストリームを生成することができる。これは、CBCモード向けの高速なハードウェア実装をOFBモードに流用することが可能であることを意味する。
CFBモードのようにブロックの一部をフィードバックに用いた場合、OFBモードにおける平均サイクル長は 2 32 {\displaystyle 2^{32}} あるいはそれ以上小さくなる。Davies、Parkinによる数学モデルと、実験による検証から、完全なフィードバックの場合にのみサイクル長は最大となることが明らかとなった。このため、OFBモードの仕様からフィードバックの切り詰めのサポートは除去されている。
P i = E K ( C i − 1 ) ⊕ C i , C 0 = I V {\displaystyle P_{i}=E_{K}(C_{i-1})\oplus C_{i},C_{0}=IV}


上に示したもっとも単純なCFBモードでは、CBCモードのような自己同期型とはなっていない。1バイト、1ビットでも欠けた場合にはそれ以降の復号は不可能となる。そのような欠落の後も同期を続けるためには、1バイト、1ビットを同時に暗号化する必要がある。ブロック暗号の入力にシフトレジスタを組み合わせることで、CFBモードは自己同期型で利用することが可能となる。
CFBモードを任意のxの整数倍の欠落に対しても同期を維持することが可能な自己同期型のストリーム暗号として利用するためには、ブロックサイズと初期化ベクトルのサイズでシフトレジスタを初期化する必要がある。これはブロック暗号によって暗号化され、暗号化結果の上位xビットは平文のxビットとのXORを取られ、これがxビットの暗号文となる。これらxビットの出力はシフトレジスタにシフトされ、次のxビットの平文の処理に用いられる。復号も同様であり、初期化ベクトルから始まり、復号、復号結果の上位xビットと暗号文のxビットのXORによりxビットの平文となり、これが次のxビットの暗号文の処理に用いられる。このような処理はCFB-8あるいはCFB-1として知られている(シフト量の大きさによる)。
まとめると次のようになる。ここで、Si は i 番目のシフトレジスタの状態、a << x は x ビットだけシフトした a、head(a, x) は a の上位 x ビット、n は初期化ベクトルのビット数である。
CTRモード (Counter Mode) は、ブロック暗号を同期型のストリーム暗号として扱うものである。integer counter mode (ICM) あるいは segmented integer counter mode (SIC) とも呼ばれる。
「カウンター」と呼ばれる値を暗号化することで鍵ストリームブロックを生成する。カウンターとしては、単調増加であり値が重複することがなければどのような関数でも用いることができるが、1ずつ増加するものがもっとも単純でありもっとも一般的である。単純かつ決定論的な関数をカウンターとして用いることには異論があり、批評家は「暗号システムを系統だった入力に晒すことは、不必要なリスクを招くものである」と主張していた。現在では、CTRモードは広く受け入れられており、入力関数に由来する問題はCTRモードではなく基礎となるブロック暗号によるものと認識されている。CTRモードはNiels FergusonおよびBruce Schneierによって推薦される2つの暗号利用モードのうちの1つとなっている(もう1つはCBCモード)。
CTRモードはOFBモードに似た性質を示すが、復号におけるランダムアクセス性を有している。CTRモードは暗号化、復号のいずれも並列処理が可能であり、マルチプロセッサ環境に適している。また、OFBモードのような短いサイクルの問題も存在しない。
下記のダイアグラムにおけるNonceは、他の暗号利用モードにおける初期化ベクトルに相当する。Nonceとカウンターを無損失操作(連結、add、XOR)によって組み合わせることで、実際に用いられるカウンターブロックが生成される。
秘匿用として多くの暗号利用モードが定義されており、これらのうち、ECB, CBC, OFB, CFBの4つは、FIPS, ANSIのほか、ISO、JISで規格化されている。またCTRは、AES制定の際に追加されたモードである。
代表的な暗号利用モードを以下に示す。以下の説明で、 C i {\displaystyle C_{i}} は暗号化後のi番目のブロック、 M i {\displaystyle M_{i}} は暗号化前のi番目のブロック、 E K ( _ ) {\displaystyle E_{K}(\_)} はブロック暗号処理を表す。