vigenere: Simplified code with normalized text

The normalized form of the text is quite helpful to simplify the code of
encryption and decryption.

Signed-off-by: Celelibi <celelibi@gmail.com>
mfreq_analysis: Don't sanitize the string

This may be done later on, with an option or something.

Signed-off-by: Celelibi <celelibi@gmail.com>
mfreq_analysis: Use the normalized text

This, again, simplify readability.

Signed-off-by: Celelibi <celelibi@gmail.com>
kasiski: Implemented kasiski method

This new module allow to break the key length by looking for repeating
substrings. If a repeating substring is found, it is probably because
the same initial substring has been ciphered with the same part of the
key.

Signed-off-by: Celelibi <celelibi@gmail.com>
cracker: Use the kasiski module

There is now at least one method to break the key length.

Signed-off-by: Celelibi <celelibi@gmail.com>
unvigenere: Allow to not specify the key length

Now there is the kasiski module, there is no need to force the key
length to be given.

Signed-off-by: Celelibi <celelibi@gmail.com>
cracker: Allow to chose the kasiski minimum length

The user of this module can now chose any value for the minimum
length of the substring match for the kasiski method.

Signed-off-by: Celelibi <celelibi@gmail.com>
unvigenere: Bring the kasiski min length to user

Since the cracker module support configuration of the minimum length of
the substring match for the kasiski method, better show it to the
command line.

Signed-off-by: Celelibi <celelibi@gmail.com>
unvigenere: Show kasiski score table

Show the long table of matching scores for the kasiski method.

Signed-off-by: Celelibi <celelibi@gmail.com>
getopthelp: Check for option consistency

More specifically, check for duplicate long option name, short option
name, or option id.

Signed-off-by: Celelibi <celelibi@gmail.com>
unvigenere: Generate option id

Use an enum to generate option ids instead of using random characters.
These constants, however, live together with the characters that are
easy to recognize. Thus these constants need to be greater than 255.

Signed-off-by: Celelibi <celelibi@gmail.com>
unvigenere: More command line sanity check

With new options come new restrictions. Especially, all kasiski-related
options need the kasiski algorithm to run...

Signed-off-by: Celelibi <celelibi@gmail.com>