This document describes the QDLPlgBlockCipher class of the QDLPluginEncryptionPS plugin for Xojo/RealStudio. This abstract class defines basic properties and behaviors of an object that ciphers data working on work on blocks of symbols usually of a fixed size.
In cryptography, a block cipher is a deterministic algorithm operating on fixed–length groups of bits, called blocks, with an unvarying transformation that is specified by a symmetric . Block ciphers are important elementary components in the design of many cryptographic protocols, and are widely used to implement encryption of bulk data.
The publication of the cipher by the U.S. National Bureau of Standards (now National Institute of Standards and Technology, NIST) in 1977 was fundamental in the public understanding of modern block cipher design. In the same way, it influenced the academic development of cryptanalytic attacks. Both differential and linear cryptanalysis arose out of studies on the DES design. Today, there is a palette of attack techniques against which a block cipher must be secure, in addition to being robust against brute force attacks. Even a secure block cipher is suitable only for the encryption of a single block under a fixed key. A multitude of modes of operation have been designed to allow their repeated use in a secure way, commonly to achieve the security goals of confidentiality and authenticity. However, block ciphers may also be used as building blocks in other cryptographic protocols, such as universal and pseudo–random number generators (src. Wikipedia).
At time, the QDLPluginEncryptionPS plugin implements a wide spectrum of ciphers based on blocks of symbols: among them, it is possible to find out almost the entire collection of the fifteen ones submitted to the Advanced Encryption Standard process to become the new standard in substitution of the aging predecessor (i.e. , , , etc.). Furthermore, the plugin implements a few well–known and widely used block ciphers such as , and .
If not otherwise stated, any block cipher implemented by the QDLPluginEncryptionPS plugin supports all of the listed below.
- shorten the specified key in case it was longer than the specified bits length
- pad the specified key with zeroes until the required length is reached if it was shorter than the specified bits length