diff options
Diffstat (limited to 'src/common/entropy.c')
-rw-r--r-- | src/common/entropy.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/common/entropy.c b/src/common/entropy.c index 1f3adfa..8dae698 100644 --- a/src/common/entropy.c +++ b/src/common/entropy.c @@ -33,6 +33,7 @@ * * * Paramètres : data = séquence d'octets à traiter. * * len = quantité de ces octets. * +* bits = calcul en concidérant les bits et non les octets ? * * * * Description : Détermine l'entropie d'un contenu binaire. * * * @@ -42,13 +43,13 @@ * * ******************************************************************************/ -double compute_entropy(const bin_t *data, size_t len) +double compute_entropy(const bin_t *data, size_t len, bool bits) { double result; /* Valeur calculée à renvoyer */ unsigned long counters[256]; /* Décompte des valeurs */ const bin_t *d_max; /* Borne de fin de parcours #1 */ const bin_t *d_iter; /* Boucle de parcours #1 */ - double log_2; + double log_2; /* Valeur constante de log2 */ unsigned long *c_max; /* Borne de fin de parcours #2 */ unsigned long *c_iter; /* Boucle de parcours #2 */ double freq; /* Fréquence liée à une valeur */ @@ -62,7 +63,12 @@ double compute_entropy(const bin_t *data, size_t len) for (d_iter = data; d_iter < d_max; d_iter++) counters[*d_iter]++; - log_2 = log(256.0); + /** + * Explication du choix de log : + * https://stackoverflow.com/questions/990477/how-to-calculate-the-entropy-of-a-file/990646#990646 + */ + + log_2 = log(bits ? 2.0 : 256.0); c_max = counters + 256; |