Everything said by @kelalaka is true, but I have proposed a Hill Cipher
Hill Cipher variant which resolves the vulerability of some attacks like Known Playtext Attack
Known Plaintext Attack and Chosen Plaintext Attack
Chosen Plaintext Attack.
In my abstract I explain the Hill Cipher
Vulnerabilities and then I present my solution. Allow me to reference myself:
"*The Hill Cipher is a classical example of a cryptosystem with interesting properties, namely that it implements the diffusion and confusion concepts coined by Shannon
as essential properties for ciphers; nonetheless, its basic form is vulnerable to KPAs. This dissertation presents an efficient method to generate nonsingular key matrices
, based on the Gauss-Jordan elimination procedure
, which provides means to generate a new matrix per each block submitted to encryption.
RKHC, described along this dissertation, uses that method and adds a step to both the encryption and decryption algorithms to deal with messages containing patterns (e.g., a sequence of zeros), in order to increase their strength against KPAs, CPAs and CCAs.
A performance evaluation of a non-optimized implementation in the C programming language of RKHC is also included, compared with those of optimized implementations of AES and Salsa20, along with a discussion of its security and limitations under the well-known cryptanalysis attacks. The claim that the proposed method embeds randomness with high entropy into the generated matrices and ciphertext is corroborated by results of the TestU01 library for stringent randomness statistical tests*".
"The Hill Cipher is a classical example of a cryptosystem with interesting properties, namely that it implements the diffusion and confusion concepts coined by Shannon as essential properties for ciphers; nonetheless, its basic form is vulnerable to KPAs. This dissertation presents an efficient method to generate nonsingular key matrices, based on the Gauss-Jordan elimination procedure, which provides means to generate a new matrix per each block submitted to encryption.
RKHC, described along this dissertation, uses that method and adds a step to both the encryption and decryption algorithms to deal with messages containing patterns (e.g., a sequence of zeros), in order to increase their strength against KPAs, CPAs and CCAs.
A performance evaluation of a non-optimized implementation in the C programming language of RKHC is also included, compared with those of optimized implementations of AES and Salsa20, along with a discussion of its security and limitations under the well-known cryptanalysis attacks. The claim that the proposed method embeds randomness with high entropy into the generated matrices and ciphertext is corroborated by results of the TestU01 library for stringent randomness statistical tests".
By the way, I tested this several times, and believe me 100x100
, 100x100 matrix generation would be very time consuming-consuming. As you can see I used 32x32
32x32 and 64x64
64x64 matrices.
You can find the source code and the full document on my github: https://github.com/mafone/rkhc. Thanks for reading!