/** * @param int $length * @return string|null */ public static function dev($length) { if (!is_readable('/dev/urandom')) { return null; } $fp = fopen('/dev/urandom', 'r'); $left = $length; $result = []; do { $buffer = fread($fp, $left); $lBuffer = Binary::getLength($buffer); if ($lBuffer === 0) { fclose($fp); return null; } $result[] = $buffer; $left -= $lBuffer; } while ($left > 0); fclose($fp); return implode('', $result); }