前端js加密后台php解密,自定義加密方法


應用場景

前端html輸入用戶名密碼之后,使用http傳到后台,post的內容全部是明文,用戶名和密碼通過抓包工具可以很容易獲取到,所以需要在http傳輸之前對密碼進行加密處理,php收到post內容之后進行解密,然后進行后續認證處理。

加密解密思路

逐個遍歷輸入的密碼字符串,在每個字符前后分別插入一個隨機的字符,靜態的隨機字符串通過大小寫字母和數字打亂順序所得。對於字符本身,如果存在於靜態的字符串中,那么將字符按照靜態字符串的順序后移三位,如此獲得最終加密的字符串。解密方式逆處理即可。

js加密代碼

 1 function encode(_str){
 2     var staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN";
 3     var encodechars = "";
 4     for(var i=0;i<_str.length;i++){
 5         var num0 = staticchars.indexOf(_str[i]);
 6         if(num0 == -1){
 7             var code = _str[i];
 8         }else{
 9             var code = staticchars[(num0+3)%62];
10         }
11         var num1 = parseInt(Math.random()*62,10);
12         var num2 = parseInt(Math.random()*62,10);
13         encodechars += staticchars[num1]+code+staticchars[num2];
14     }
15     return encodechars;
16 }
 1 function decode(_str){
 2     var staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN";
 3     var decodechars = "";
 4     for(var i=1;i<_str.length;){
 5         var num0 = staticchars.indexOf(_str[i]);
 6         if(num0 == -1){
 7             var code = _str[i];
 8         }else{
 9             var code = staticchars[(num0+59)%62];
10         }
11         decodechars += code;
12         i = i+3;
13     }
14     return decodechars;
15 }

php解密代碼

 1 public function decode($str){ 
 2         $staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN";
 3         $decodechars = "";
 4         for($i=1;$i<strlen($str);){
 5             $num0 = strpos($staticchars, $str[$i]);
 6             if($num0 !== false){
 7                 $num1 = ($num0+59)%62;
 8                 $code = $staticchars[$num1];
 9             }else{
10                 $code = $str[$i];
11             }
12             $decodechars .= $code;
13             $i+=3;           
14         }                      
15         return $decodechars;
16     }

原密碼

admin!@#123

加密后的密碼

(插入的字符是隨機獲取的,所以加密的密碼每次都不一樣)

aQfacYtzkU64fMYe!VV@AY#KdaDZF9oV0

特別說明

上面這種加密方式只是進行了一種簡單的偽裝,通過分析JS代碼是很容易破解的,要求不高可以使用。為了規避抓包分析導致密碼泄露,可以使用https進行傳輸。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM