Block ciphers
Since the nature of block ciphers is to encrypt blocks of data, every
implementation has to have text_size
and key_size
among its attributes.
The design choice is to not enforce them, nevertheless they are strictly
recommended.
Note that every cipher is implemented as a frozen dataclass. The design choice is to have an automatic method to identify the instance. This is achieved caching in the best effort way all properties that can be derived by the attributes which are mandatory.