Search for a tool
Index of Coincidence

Tool to compute coincidence index (IoC) in cryptanalysis, in order to study the probability of finding repeating letters in an encrypted text.

Results

Index of Coincidence -

Tag(s) : Cryptanalysis

Share
Share
dCode and more

dCode is free and its tools are a valuable help in games, maths, geocaching, puzzles and problems to solve every day!
A suggestion ? a feedback ? a bug ? an idea ? Write to dCode!


Please, check our community Discord for help requests!


Thanks to your feedback and relevant comments, dCode has developped the best 'Index of Coincidence' tool, so feel free to write! Thank you !

Index of Coincidence

Cryptanalysis using Index of Coincidence



Tool to compute coincidence index (IoC) in cryptanalysis, in order to study the probability of finding repeating letters in an encrypted text.

Answers to Questions

What is the Index of Coincidence? (Definition)

The index of coincidence is an indicator used in cryptanalysis which makes it possible to evaluate the global distribution of letters in encrypted message for a given alphabet.

A text written in English language has an index of coincidence of 0.0667, but some ciphers modify this value which can allow them to be recognized.

How to calculate a coincidence index?

Index of coincidence uses the formula:

$$ IC = \sum_{i=A}^{i=Z} \frac{n_{i}(n_{i}-1)}{N(N-1)} $$

with $ n_i $ the number of occurrences of the letter $ i $ in the text and $ N $ the total number of letters.

How to use Index of Coincidence?

For a given ciphered message, the value for the IoC allows to filter the list of ciphering methods to use. It is one of the first cryptanalysis technique.

If the Index of coincidence is high (close to $ 0.070 $), i.e. similar to plain text, then the message has probably been crypted using a transposition cipher (letters were shuffled) or a monoalphabetic substitution (a letter can be replaced by only one other).

If the Index of coincidence is low (close to $ 0.0385 $), i.e. similar to a random text, then the message has probably been crypted using a polyalphabetic cipher (a letter can be replaced by multiple other ones).

The more the coincidence count is low, the more alphabets have been used.

Example: Vigenere cipher with a key of length 4 to 8 letters have an IC of about $ 0.045 \pm 0.05 $

What are values of IC among languages?

For an non encrypted text, coincidence indexes are

English0.0667French0.0778
German0.0762Spanish0.0770
Italian0.0738Russian0.0529

What is a random text?

A text where each letter has the same probability of appearance than another, IC is then of $ 1/N $ (where $ N $ is the number of letters in the alphabet)

Example: $ IC = 0.0385 $ for $ N=26 $

How to code an IC function? (Algorithm)

Examples of codes in programming languages // Python
def ic(self):
num = 0.0
den = 0.0
for val in self.count.values():
i = val
num += i * (i - 1)
den += i
if (den == 0.0):
return 0.0
else:
return num / ( den * (den - 1))

Source code

dCode retains ownership of the online 'Index of Coincidence' tool source code. Except explicit open source licence (indicated CC / Creative Commons / free), any algorithm, applet or snippet (converter, solver, encryption / decryption, encoding / decoding, ciphering / deciphering, translator), or any function (convert, solve, decrypt / encrypt, decipher / cipher, decode / encode, translate) written in any informatic language (PHP, Java, C#, Python, Javascript, Matlab, etc.) no data, script or API access will be for free, same for Index of Coincidence download for offline use on PC, tablet, iPhone or Android !

Need Help ?

Please, check our community Discord for help requests!

Questions / Comments

Thanks to your feedback and relevant comments, dCode has developped the best 'Index of Coincidence' tool, so feel free to write! Thank you !


Source : https://www.dcode.fr/index-coincidence
© 2020 dCode — The ultimate 'toolkit' to solve every games / riddles / geocaching / CTF.
Feedback