protected static function mask($mask, $str)
{
$out = '';
$l = mb_orig_strlen($str);
$ml = mb_orig_strlen($mask);
while (($o = mb_orig_strlen($out)) < $l) {
$out .= mb_orig_substr($str, $o, $ml) ^ $mask;
}
return $out;
}