从/ dev / urandom转换随机值

PiT*_*ber 5 php random

正如评论中mt_rand()提到的那样它的安全性很弱,我们应该改用/ dev / urandom。我的问题是从urandom中我得到了一个二进制字符串。

如何将该二进制字符串转换为0-9a-zA-Z?

看起来base_convert()在这里不起作用。

PiT*_*ber 3

仅供记录完整功能:

function randomFromDev($len)
{
    $fp = @fopen('/dev/urandom','rb');
    $result = '';
    if ($fp !== FALSE) {
        $result .= @fread($fp, $len);
        @fclose($fp);
    }
    else
    {
        trigger_error('Can not open /dev/urandom.');
    }
    // convert from binary to string
    $result = base64_encode($result);
    // remove none url chars
    $result = strtr($result, '+/', '-_');
    // Remove = from the end
    $result = str_replace('=', ' ', $result);
    return $result;
}
Run Code Online (Sandbox Code Playgroud)