I fail at reply to all.

On 12 January 2015 at 16:52, Leigh <lei...@gmail.com> wrote:
> On 12 January 2015 at 09:31, Andrea Faulds <a...@ajf.me> wrote:
>> - To produce a repeatable sequence of random numbers (works, but only if you 
>> and the sole user of the global random number  generator, which is not 
>> guaranteed by any means)
>>
>
> If you're talking about the libc implementation then this is not the
> case, the RNG state is not shared between processes. If you mean
> across threads / web requests, then yes rand() is not reentrant,
> although this is easily fixed by using rand_r() at the cost an
> additional uint per thread. (MT is quite a bit more expensive to make
> reentrant)
>
> On 12 January 2015 at 09:37, Andrea Faulds <a...@ajf.me> wrote:
>> - To generate cryptographic keys - a seeded random number generator should 
>> NEVER be used for this, but because PHP is so lacking in good facilities to 
>> obtain random data for cryptographic purposes, unfortunately rand() is used 
>> more than it should be. rand() is already pretty bad, but the existence of 
>> srand() makes this a particular problem. Everything shares the same random 
>> number generator, which makes it worse, as something might seed it and now 
>> your key is easily predictable.
>
> Nobody with any real desire to produce secure cryptographic keys will
> use rand() for this. I've mentioned in a previous thread I would like
> to see a generic get_random_bytes() function outside of any
> cryptography extensions that would fall back through /dev/?random /
> CryptGenRandom / MT to get the best possible random for a string of
> bytes for a platform in a quick manner, instead of people trying to
> loop over mt_rand(0,255) per byte.

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to