Blocking

Most cryptographic algorithms are implemented to encipher fixed sized blocks of data, often a power of 2 such as 64 or 512 bits. This means each block will stand on its own and not be related to any other. Thus it might be possible to break the protection on a single block and replace it without being detected. It also means that the individual blocks could be re-arranged, thus breaking the integrity of the data, without being detected. This independence also gives more information to someone using crpto-analysis to break the algorithm and find the key. To make crypto-analysis of the cipher text more difficult, and to ensure that data which is enciphered together can not be rearranged a method known as cipher block chaining is used on larger pieces of data. This method requires the cryptographic algorithm to produce some remainder value from its calculation of the cipher text. This remainder is then used, with the key, as input to the encipherment of the next block, and the remainder from the second block is used to encipher the third block, and so on. Thus the order of the data in the plaintext is used in the encipherment process, and any re-ordering will detected as the result from the decipherment would be gibberish. A seed value has to be used in place of a remainder for the first block; this is known as an initialization vector. The initialization vector can be as secret as the key, or it could be made known, depending on the application.