CipherMode 列挙型


暗号化に使用するブロック暗号モードを指定します。Specifies the block cipher mode to use for encryption.

public enum class CipherMode
public enum CipherMode
type CipherMode = 
Public Enum CipherMode



CBC (Cipher Block Chaining) モードは、前のブロックの演算結果を次に引き継ぎます。The Cipher Block Chaining (CBC) mode introduces feedback. 平文の各ブロックは、暗号化される前に、前のブロックの演算結果である暗号文とビットごとの排他的 OR 演算によって組み合わされます。Before each plain text block is encrypted, it is combined with the cipher text of the previous block by a bitwise exclusive OR operation. これにより、平文に同一のブロックが多数含まれている場合でも、それらのブロックはそれぞれ異なった暗号文へと暗号化されます。This ensures that even if the plain text contains many identical blocks, they will each encrypt to a different cipher text block. 最初の平文ブロックの場合は、暗号化される前に、ビットごとの排他的 OR 演算によって初期化ベクターと組み合わされます。The initialization vector is combined with the first plain text block by a bitwise exclusive OR operation before the block is encrypted. 暗号文ブロックの 1 つのビットが破損すると、対応する平文ブロックも破損します。If a single bit of the cipher text block is mangled, the corresponding plain text block will also be mangled. さらに、後続ブロックの、元の破損ビットと同位置にあるビットも破損してしまいます。In addition, a bit in the subsequent block, in the same position as the original mangled bit, will be mangled.


CFB (Cipher Feedback) モードは、一度に 1 ブロック全体を処理するのではなく、平文を少しずつ処理して暗号文を生成します。The Cipher Feedback (CFB) mode processes small increments of plain text into cipher text, instead of processing an entire block at a time. このモードでは、長さが 1 ブロックで、複数のセクションに分割されたシフト レジスタを使用します。This mode uses a shift register that is one block in length and is divided into sections. たとえば、ブロック サイズが 8 バイトで、一度に 1 バイトずつ処理される場合、シフト レジスタは 8 個のセクションに分割されます。For example, if the block size is 8 bytes, with one byte processed at a time, the shift register is divided into eight sections. 暗号文の 1 つのビットが破損すると、対応する平文のビットが 1 つ破損し、シフト レジスタも破損します。If a bit in the cipher text is mangled, one plain text bit is mangled and the shift register is corrupted. この結果、不良なビットがシフト レジスタからシフト アウトするまで、続けて処理される平文中のいくつかのビットも破損してしまいます。This results in the next several plain text increments being mangled until the bad bit is shifted out of the shift register. 既定のフィードバック サイズはアルゴリズムによって異なる可能性がありますが、通常は 8 ビットまたはブロック サイズのビット数になります。The default feedback size can vary by algorithm, but is typically either 8 bits or the number of bits of the block size. フィードバックのビット数は、FeedbackSize プロパティを使用して変更できます。You can alter the number of feedback bits by using the FeedbackSize property. CFB をサポートするアルゴリズムでは、このプロパティを使用してフィードバックを設定します。Algorithms that support CFB use this property to set the feedback.


CTS (Cipher Text Stealing) モードは、任意の長さの平文を処理し、その平文と同じ長さの暗号文を生成します。The Cipher Text Stealing (CTS) mode handles any length of plain text and produces cipher text whose length matches the plain text length. このモードは、平文の最後の 2 ブロック以外については、CBC モードと同じように動作します。This mode behaves like the CBC mode for all but the last two blocks of the plain text.


ECB (Electronic Codebook) モードは、各ブロックを個別に暗号化します。The Electronic Codebook (ECB) mode encrypts each block individually. 同じメッセージに含まれる同一の平文ブロック、または同じキーで暗号化された別のメッセージに含まれる平文ブロックは、同一の暗号文ブロックに変換されます。Any blocks of plain text that are identical and in the same message, or that are in a different message encrypted with the same key, will be transformed into identical cipher text blocks. 重要: 複数のセキュリティ攻撃を受ける可能性が出てくるため、このモードの使用は推奨されません。Important: This mode is not recommended because it opens the door for multiple security exploits. 暗号化する平文に繰り返しが多い場合、生成された暗号文に含まれるあるブロックが一度に 1 ブロックずつ解読される可能性が高まります。If the plain text to be encrypted contains substantial repetition, it is feasible for the cipher text to be broken one block at a time. ブロック分析を使用して暗号化キーを判断することもできます。It is also possible to use block analysis to determine the encryption key. また、悪意のある攻撃者が、攻撃に気付かれることなく個別のブロックを置き換えたり、交換したりすることもできるので、攻撃に気付かれることなくブロックを保存したり、他のポイントでストリームに挿入したりすることも可能になります。Also, an active adversary can substitute and exchange individual blocks without detection, which allows blocks to be saved and inserted into the stream at other points without detection.


OFB (Output Feedback) モードは、一度に 1 ブロック全体を処理するのではなく、平文を少しずつ処理して暗号文を生成します。The Output Feedback (OFB) mode processes small increments of plain text into cipher text instead of processing an entire block at a time. このモードは CFB とほとんど同じですが、シフト レジスタへの入力方法だけが異なります。This mode is similar to CFB; the only difference between the two modes is the way that the shift register is filled. 暗号文の 1 つのビットが破損すると、平文の対応するビットが破損します。If a bit in the cipher text is mangled, the corresponding bit of plain text will be mangled. ただし、暗号文に余分なビットや欠落しているビットがあると、平文はその位置から破損してしまいます。However, if there are extra or missing bits from the cipher text, the plain text will be mangled from that point on.


ブロック暗号アルゴリズムは、一度に1バイトではなく、ブロック単位でデータを暗号化します。Block cipher algorithms encrypt data in block units, rather than a single byte at a time. 最も一般的なブロックサイズは8バイトです。The most common block size is 8 bytes. 各ブロックは大量に処理されるため、ブロック暗号は、ストリーム暗号よりも高いレベルのセキュリティを提供します。Because each block is heavily processed, block ciphers provide a higher level of security than stream ciphers. ただし、ブロック暗号アルゴリズムは、ストリーム暗号よりも実行速度が遅くなる傾向があります。However, block cipher algorithms tend to execute more slowly than stream ciphers.

ブロック暗号では、ブロックごとに同じ暗号化アルゴリズムが使用されます。Block ciphers use the same encryption algorithm for each block. このため、プレーンテキストのブロックは、同じキーとアルゴリズムで暗号化された場合、常に同じ暗号テキストを返します。Because of this, a block of plain text will always return the same cipher text when encrypted with the same key and algorithm. この動作は暗号のクラックに使用できるため、以前のブロック暗号化からのフィードバックに基づいて暗号化プロセスを変更する暗号モードが導入されています。Because this behavior can be used to crack a cipher, cipher modes are introduced that modify the encryption process based on feedback from earlier block encryptions. 結果として得られる暗号化は、単純なブロック暗号化よりも高いレベルのセキュリティを実現します。The resulting encryption provides a higher level of security than a simple block encryption.