4

I've had many questions on Stackoverflow on how to minimize the output of a cipher - during encryption of course - to the same size as the input. Obviously this is possible for a single block of plaintext, but it gets harder when the plaintext size is larger than one block. Using a stream cipher is possible, but you would need some kind of IV, and some place to store or derive the input data for the IV.

For now I am just looking for answers regarding confidentiality (authentication/integrity may be disregarded). Furthermore, I would like to focus on input that is bit or byte aligned and cannot be compressed. Obviously it would be nice to have obviously distinct results when using a different plaintext, even if it starts or ends with blocks of identical data. The key size should be manageable, say a maximum of 64 bytes.

Currently I presume that the best result can be achieved using a stream cipher and a nonce encoded to the minimum of required bytes. So then the encoded nonce would be the only overhead.

Note that I am very much aware that the solution space may be empty. In that case I very much would like to have this confirmed.

Maarten Bodewes
  • 92,551
  • 13
  • 161
  • 313

0 Answers0