diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2024-11-24 07:16:43 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2024-11-24 07:16:43 (GMT) |
commit | 31c235f145189fe146f9374d6826927de5964a07 (patch) | |
tree | f2e7f0f782845faad6de9bc56f4d8aa5af42adae /src/common/entropy.c | |
parent | 6a26f36c928ed604f5cc7d6aa04e51a1469cf57c (diff) |
Include entropy (expressed in bits or bytes) into the Python API.
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; |