33 if (!data || len == 0)
35 for (i = 0; i < 256; i++)
37 for (i = 0; i < len; i++)
39 for (i = 0; i < 256; i++) {
41 double p = (double)counts[i] / (
double)len;
51 if (!data || len == 0)
53 for (i = 0; i < len; i++) {
54 unsigned int b = data[i];
56 b = b - ((b >> 1) & 0x55u);
57 b = (b & 0x33u) + ((b >> 2) & 0x33u);
58 b = (b + (b >> 4)) & 0x0Fu;
61 return (
double)ones / ((double)len * 8.0);
67 double expected, chi = 0.0;
68 if (!data || len == 0)
70 for (i = 0; i < 256; i++)
72 for (i = 0; i < len; i++)
74 expected = (double)len / 256.0;
75 for (i = 0; i < 256; i++) {
76 double diff = (double)counts[i] - expected;
77 chi += (diff * diff) / expected;
double n_entropy_shannon(const unsigned char *data, size_t len)
Shannon entropy of the byte sample, in bits per byte (0.0 .
double n_entropy_monobit(const unsigned char *data, size_t len)
Fraction of set bits in the sample (0.0 .
double n_entropy_chi_square(const unsigned char *data, size_t len)
Chi-square statistic of the byte histogram against a uniform distribution over 256 values.
Randomness/entropy metrics for byte samples (token-randomness analysis)