若想對純數字進行加密,即想讓别人無法猜到你的數,又想縮小長度,還要保證不出現特殊字元, 那麼你可以将十進制數轉化成 自定義的 62進制。
0-9,a-z,A-Z合起來正好為62個字元, 并且你可以将這些字元随機拼裝,形成一個映射表:
比如 61 我們用0來表示, 60用A來表示,0用n來表示。 隻要不知道你的映射表, 其他人不可能一眼就猜出你的真實資料。
/**
* 将十進制轉成62進制
* @param $n
*/
public static function _10to62($n){
$table ="6Qw7fWXgTjkcordIKLvBstRSD3n904U5e8ZMOPluhJmiNxVyzY12AFGHabpCEq"; //映射表
// $table ="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$res = "";
while(($a=floor($n/62)) > 0)
{
$res = $table[$n%62].$res;
$n = $a;
}
$res = $table[$n%62].$res;
return $res;
}
/**
* 将 62進制轉成10進制
*/
public static function _62to10($m){
$table ="6Qw7fWXgTjkcordIKLvBstRSD3n904U5e8ZMOPluhJmiNxVyzY12AFGHabpCEq"; //映射表
// $table ="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$res = 0;
for($n=strlen($m),$i=$n-1;$i>=0;$i--){
$res += strpos($table,$m[$n-$i-1])*pow(62,$i);
}
return $res;
}