PHP加密解密数字
2021-07-17 17:05
标签:数据 split fss ssm 字段 bst function replace class PHP加密解密数字 标签:数据 split fss ssm 字段 bst function replace class 原文地址:http://www.cnblogs.com/719907411hl/p/7066780.html 1 php
2 /**
3 * 加密解密类,PHP加密解密数字,适用于URL加密
4 * 该算法仅支持加密数字。比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密。
5 * @version alpha
6 * @加密原则 标记长度 + 补位 + 数字替换
7 * @加密步骤:
8 * 将a-z,A-Z,0-9 62个字符打乱,取前M(数字最大的位数)位作为 标记长度字符串,取第M+1 到第M+10位为数字替换字符串,剩余的为补位字符串
9 * 1.计算数字长度n,取乱码的第n位作为标记长度。
10 * 2.计算补位的长度,加密串的长度N -1 - n 为补位的长度。根据指定的算法得到补位字符串。
11 * 3.根据数字替换字符串替换数字,得到数字加密字符串。
12 * 标记长度字符 + 补位字符串 + 数字加密字符串 = 加密串
13 * Usage:
14 * $obj = new XDeode(9);
15 * $e_txt = $obj->encode(123);
16 * echo $e_txt.‘
‘;
17 * echo $key->decode($e_txt);
18 */
19 class XDeode
20 {
21 private $strbase = "Flpvf70CsakVjqgeWUPXQxSyJizmNH6B1u3b8cAEKwTd54nRtZOMDhoG2YLrI";
22 private $key,$length,$codelen,$codenums,$codeext;
23 function __construct($length = 9,$key = 2543.5415412812){
24 $this->key = $key;
25 $this->length = $length;
26 $this->codelen = substr($this->strbase,0,$this->length);
27 $this->codenums = substr($this->strbase,$this->length,10);
28 $this->codeext = substr($this->strbase,$this->length + 10);
29 }
30
31
32 function encode($nums){
33 $rtn = "";
34 $numslen = strlen($nums);
35 //密文第一位标记数字的长度
36 $begin = substr($this->codelen,$numslen - 1,1);
37
38 //密文的扩展位
39 $extlen = $this->length - $numslen - 1;
40 $temp = str_replace(‘.‘, ‘‘, $nums / $this->key);
41 $temp = substr($temp,-$extlen);
42
43 $arrextTemp = str_split($this->codeext);
44 $arrext = str_split($temp);
45 foreach ($arrext as $v) {
46 $rtn .= $arrextTemp[$v];
47 }
48
49 $arrnumsTemp = str_split($this->codenums);
50 $arrnums = str_split($nums);
51 foreach ($arrnums as $v) {
52 $rtn .= $arrnumsTemp[$v];
53 }
54 return $begin.$rtn;
55 }
56
57
58 function decode($code){
59
60 $begin = substr($code,0,1);
61 $rtn = ‘‘;
62 $len = strpos($this->codelen,$begin);
63 if($len!== false){
64 $len++;
65 $arrnums = str_split(substr($code,-$len));
66 foreach ($arrnums as $v) {
67 $rtn .= strpos($this->codenums,$v);
68 }
69 }
70
71 return $rtn;
72 }
73 }
74
75 $obj = new XDeode(10);
76 echo $obj->encode(1)."
";
77 echo $obj->encode(2)."
";
78 echo $obj->encode(3)."
";
79 echo $obj->encode(4)."
";
80 echo $obj->encode(5)."
";
81 echo $obj->encode(6)."
";
82 echo $obj->encode(7)."
";
83 echo $obj->encode(8)."
";
84 echo $obj->encode(9)."
";
85 echo $obj->encode(10)."
";
86 echo $obj->encode(45762454)."
";
87 echo $obj->encode(1023213123)."
";
88 echo $obj->encode(134320)."
";
89 echo ‘
‘;
90
91 echo $obj->decode(‘FzxxmyQzxV‘)."
";
92 echo $obj->decode(‘FSSyJzxSSj‘)."
";
93 echo $obj->decode(‘FmNyixHxNq‘)."
";
94 echo $obj->decode(‘FQJJzHSSJg‘)."
";
95 echo $obj->decode(‘FzyQiNziye‘)."
";
96 echo $obj->decode(‘FizmQyNyzW‘)."
";
97 echo $obj->decode(‘FNSNSxxJyU‘)."
";
98 echo $obj->decode(‘FQNHyNJJHP‘)."
";
99 echo $obj->decode(‘FyiQiimiiX‘)."
";
100 echo $obj->decode(‘lxxmyQzxVk‘)."
";
101 echo $obj->decode(‘CSgeUWjgeg‘)."
";
102 echo $obj->decode(‘aQSSmNHxxzzJJNVkjqjVqVjq‘)."
";
103 echo $obj->decode(‘7ziiVqgqjk‘)."
";
104
105 //FzxxmyQzxV
106 //FSSyJzxSSj
107 //FmNyixHxNq
108 //FQJJzHSSJg
109 //FzyQiNziye
110 //FizmQyNyzW
111 //FNSNSxxJyU
112 //FQNHyNJJHP
113 //FyiQiimiiX
114 //lxxmyQzxVk
115 //CSgeUWjgeg
116 //aQSSmNHxxzzJJNVkjqjVqVjq
117 //7ziiVqgqjk
118 //1
119 //2
120 //3
121 //4
122 //5
123 //6
124 //7
125 //8
126 //9
127 //10
128 //45762454
129 //1023213123
130 //134320
上一篇:JS表单验证