protected static function getRandomData($length, $packSize, $packFormat, $callback = null)
    {
		$data = '';
		while(strlen($data) < $length) {
			$randomBytes = self::getRandomBytes($packSize);
			$value = unpack($packFormat, $randomBytes)[1];
			if (is_callable($callback)) {
				$value = call_user_func($callback, $value);
			}
			$data .= $value;
		}
		return substr($data, 0, $length);
	}