<cfb>

Type: <cfb>

This is the type for Cipher Feedback Mode, which is used with another encryption scheme to strengthen that particular cipher. In the examples shown for this library, aes-encrypt is used.

In layman's terms, CFB mutates each time it is used. Therefore, for decryption, it is necessary to have two copies of the key. The keys must be synchronized in use: the first message encrypted by cfb-encrypt must be the first message decrypted by cfb-decrypt, likewise with the second, the third, and so on. Otherwise, garbage will be returned.

Slightly more technical explanation:

Cipher "modes" provide block ciphers with capabilities that they would otherwise lack; CFB provides a cipher with protection against replay and block shuffling attacks, because the same ciphertext encrypts and decrypts in different ways depending on its position in the stream.

Cipher Feedback Mode generates blocks of data to be used for encrypting plaintext by repeatedly encrypting those blocks in a sort of feedback loop. The Initialization Vector is the first of those blocks.

For a more detailed discussion of Cipher FeedBack mode, see Wikipedia's entry on Block Ciphers.

See Also: cfb?, make-cfb, cfb-encrypt, cfb-decrypt