若想对纯数字进行加密,即想让别人无法猜到你的数,又想缩小长度,还要保证不出现特殊字符, 那么你可以将十进制数转化成 自定义的 62进制。
0-9,a-z,A-Z合起来正好为62个字符, 并且你可以将这些字符随机拼装,形成一个映射表:
比如 61 我们用0来表示, 60用A来表示,0用n来表示。 只要不知道你的映射表, 其他人不可能一眼就猜出你的真实数据。
[php] view plain copy
- 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;
- }
- 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;