You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Current implementation of function fill_rand_string() uses randombytes()
to get random bytes and then gets modulus of 26. However, since the
number of variations is 256, which is not exact division of 26, this
causes the last four characters 'w', 'x', 'y', and 'z' appearing with
less frequency than other characters. By testing, the entropy 4.699504
and arithmetic mean 109.3771 slightly deviates from the theoretical
values log2(26)=4.700440 and 109.5, respectively. Regarding the samples
and function to calculate the arithmetic mean, 150,000 samples were
generated via the command "ih RAND" and these samples are used as
argument to the "ent" command to calculate entropy and arithmetic mean.
Here we expand buffer to 64-bit unsigned integer before getting random
bytes. Calculating modulus on 64-bit unsigned integer gives more random
result.
After implementation, the entropy 4.700423 and arithmetic mean 109.5105
are improved to be closer to theoretical values.
0 commit comments