What's the best way to generate a cryptographically secure 32 bytes salt in PHP, without depending on libraries seldom included in typical PHP installations?
After some googling I discovered that mt_rand
is not considered secure enough, but I haven't found a suggestion for a replacement. One article suggested reading from /dev/random
but not only this won't work on windows; it is also very slow.
I want a reasonable balance between security and speed (ie, it shouldn't take 20 seconds to generate 512 bytes, like /dev/random
usually does)
This is easier in PHP 7:
Just use $salt = random_bytes($numberOfDesiredBytes);
to generate a salt.
What do you need a salt for, anyway? If it's for passwords, just use password_hash()
and password_verify()
.