preg_match('|^#(.*)$|', $key, $keys);
if(empty($keys[1])) return false;
$key = $keys[1];
// start
if(strlen($key) >= 12){
// digit 12
$mark = substr($key, 0, 1);
if($mark == '#' || $mark == '$'){
if(preg_match('|^#([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|', $key, $str)){
$trip = substr(crypt(pack('H*', $str[1]), "$str[2].."), -10);
}else{
// ext
$trip = '???';
}
}else{
$trip = substr(base64_encode(sha1($key, TRUE)), 0, 12);
$trip = str_replace('+', '.', $trip);
}
}else{
// digit 10
$tripkey = htmlspecialchars($key, ENT_QUOTES);
$salt = htmlspecialchars($key, ENT_QUOTES);
$salt = substr($tripkey . 'H.', 1, 2);
$pattern = '/[\x00-\x20\x7B-\xFF]/';
$salt = preg_replace($pattern, ".", $salt);
$patterns = ":;<=>?@[\\]^_`";
$mach = "ABCDEFGabcdef";
for($i=0; $i<=13-1; $i++){
$salt = str_replace($patterns[$i], $mach[$i], $salt);
}
$trip = crypt($tripkey, $salt);
$trip = substr($trip, -10);
}
$trip = '◆'.$trip;
return $trip;
}