Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Well, that's not entirely true, even if two random bits are independent, xor-ing them only gives you one random bit. What actually happens in Linux is that each new input of random bits gets pushed through a cryptographic hash, before being xor'd.


From replies it seems my two sentences weren't as clear as I thought. I'll try to refine it:

A property of bitwise xoring random variable `x` with a constant (or otherwise non-random but independent) value is that the entropy of `x` is preserved in the result.


However, xoring two arbitrary random variables is NOT guaranteed to preserve entropy. Preserving entropy only happens under certain specific conditions.


Under what circumstances would xoring `x` and `y` not produce a result with entropy at least as great as `x`?


In the very obvious cases where x == y, or x == not y, or x == y + 1, or many other correlations.


Only if y is known to be dependent on x. If y is random but just so happens to be `not x` or `== x` then that won't make the result any less random.

0 is as random a number as 529890873740477 is.


Single numbers don't really have entropy at all, so that is not something it even makes sense to talk about.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: