打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
jQuery--base64前台加密解密

关于加密,很多人想到encodeURI和escape。这个对加密url,尤其是带中文参数的url很有用。

如果只是想做加密解密,类似于java的DES,网上jQuery有个jquery.base64.js。

(关于js的md5加密可以用jquery.md5.js,有兴趣可以找来测试一下)。


下面是测试:

  1. <html>  
  2. <head>  
  3.     <title></title>  
  4.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5.     <script language="javascript" src="jquery-1.7.1.js"></script>  
  6.     <script language="javascript" src="jquery.base64.js"></script>  
  7.       
  8. </head>  
  9.   
  10. <body>  
  11. <input id="path"  name="path" type="hidden" value="haha"></input>  
  12.   
  13. <input id="putcardno01"  name="putcardno01" type="text" size="65" value=""></input>  
  14. <br>  
  15.   
  16. <input onclick="subfunc();" class="btn1" value="提交加密"   type="button"></input>  
  17. <br>  
  18. 加密后:<input id="putcardno02"  name="putcardno02" type="text" size="65" value=""></input>  
  19. <br>  
  20. <input onclick="subfunc02();" class="btn1" value="提交解密"   type="button"></input>  
  21. <br>  
  22. <br>  
  23.   
  24. <hr>  
  25.   
  26. <input onclick="subfunc03();" class="btn1" value="提交N次加密"   type="button"></input>  
  27. <br>  
  28. 加密后:<input id="putcardno03"  name="putcardno03" type="text" size="65" value=""></input>  
  29. <br>  
  30. <input onclick="subfunc04();" class="btn1" value="提交N次解密"   type="button"></input>  
  31. <br>  
  32. <br>  
  33.   
  34.   
  35. <input onclick="clearrr();" class="btn1" value="清除"   type="button"></input>  
  36. <br>  
  37. <textarea id='txt' cols="75" rows="19"></textarea>  
  38.   
  39.   
  40.   
  41. </body>  
  42.   
  43.   
  44. <script language="javascript">  
  45. var path=document.getElementById("path").value;  
  46. function app(info){  
  47.    $("#txt").val($("#txt").val()+'\n'+info);  
  48. }  
  49.   
  50.   
  51.   
  52. function subfunc(){  
  53.   var put1=$.trim($("#putcardno01").val());  
  54.  // var estxt=$.base64.encode(put1);  
  55.   //var estxt=$.base64.btoa(put1);  
  56.   
  57.   var estxt=encodeBase64(put1);  
  58.   $("#putcardno02").val(estxt);  
  59.   app("加密后["+estxt+"]");  
  60. }  
  61.   
  62.   
  63.   
  64. function subfunc02(){  
  65.   var put1=$.trim($("#putcardno02").val());  
  66.   //var estxt=$.base64.decode(put1);  
  67.   //var estxt=$.base64.atob(put1);  
  68.   
  69.   var estxt=decodeBase64(put1);  
  70.   app("解密后["+estxt+"]");  
  71. }  
  72.   
  73.   
  74. //////////////////////////////////////////  
  75. var numTimes=5;  
  76.   
  77. function subfunc03(){  
  78.   var put1=$.trim($("#putcardno01").val());  
  79.  // var estxt=$.base64.encode(put1);  
  80.   //var estxt=$.base64.btoa(put1);  
  81.   //estxt=$.base64.btoa(estxt);  
  82.     
  83.   estxt=encodeBase64(put1,numTimes);  
  84.   
  85.   $("#putcardno03").val(estxt);  
  86.   app(numTimes+"次加密后["+estxt+"]");  
  87. }  
  88.   
  89.   
  90.   
  91. function subfunc04(){  
  92.   var put1=$.trim($("#putcardno03").val());  
  93.   //var estxt=$.base64.decode(put1);  
  94.   //var estxt=$.base64.atob(put1);  
  95.   //estxt=$.base64.atob(estxt);  
  96.   
  97.   
  98.   estxt=decodeBase64(put1,numTimes);  
  99.   app(numTimes+"次解密后["+estxt+"]");  
  100. }  
  101.   
  102.   
  103. function clearrr(){  
  104.   $("#putcardno02").val("");  
  105.   $("#putcardno03").val("");  
  106.   $("#putcardno04").val("");  
  107.   $("#txt").val("");  
  108. }  
  109.   
  110.   
  111.   
  112.   
  113.   
  114.   
  115.   
  116.   
  117.   
  118.   
  119.   
  120.   
  121.   
  122. //加密方法。没有过滤首尾空格,即没有trim.  
  123. //加密可以加密N次,对应解密N次就可以获取明文  
  124. function encodeBase64(mingwen,times){  
  125.     var code="";  
  126.     var num=1;  
  127.     if(typeof times=='undefined'||times==null||times==""){  
  128.        num=1;  
  129.     }else{  
  130.        var vt=times+"";  
  131.        num=parseInt(vt);  
  132.     }  
  133.   
  134.     if(typeof mingwen=='undefined'||mingwen==null||mingwen==""){  
  135.   
  136.     }else{  
  137.         $.base64.utf8encode = true;  
  138.         code=mingwen;  
  139.         for(var i=0;i<num;i++){  
  140.            code=$.base64.btoa(code);  
  141.         }  
  142.     }  
  143.     return code;  
  144. }  
  145.   
  146.   
  147. //解密方法。没有过滤首尾空格,即没有trim  
  148. //加密可以加密N次,对应解密N次就可以获取明文  
  149. function decodeBase64(mi,times){  
  150.     var mingwen="";  
  151.     var num=1;  
  152.     if(typeof times=='undefined'||times==null||times==""){  
  153.        num=1;  
  154.     }else{  
  155.        var vt=times+"";  
  156.        num=parseInt(vt);  
  157.     }  
  158.   
  159.   
  160.     if(typeof mi=='undefined'||mi==null||mi==""){  
  161.   
  162.     }else{  
  163.        $.base64.utf8encode = true;  
  164.        mingwen=mi;  
  165.        for(var i=0;i<num;i++){  
  166.            mingwen=$.base64.atob(mingwen);  
  167.        }  
  168.     }  
  169.     return mingwen;  
  170. }  
  171.   
  172.   
  173. /*  
  174. 测试  
  175. 输入 suolong2014version  
  176.   
  177.   
  178. 加密后[c3VvbG9uZzIwMTR2ZXJzaW9u]  
  179. 解密后[suolong2014version]  
  180. 5次加密后[VjFod1QxWXlVblJUYTJoUVYwWmFhRnBYZEhOTk1WSlhWV3hPVG1KSVFscFZNalYzWVVaYU5tSkVSVDA9]  
  181. 5次解密后[suolong2014version]  
  182. */  
  183. </script>  


在后台加密解密是不是和前台一样?

我们测试一下:

  1. package com.code;  
  2.   
  3. import sun.misc.BASE64Decoder;  
  4. import sun.misc.BASE64Encoder;  
  5.   
  6. /**  
  7.  *   
  8.  * Base64加密--解密  
  9.  *   
  10.  * @author lushuaiyin  
  11.  *  
  12.  */  
  13. public class Base64Util {  
  14.   
  15.     /**  
  16.      * @param args  
  17.      */  
  18.     public static void main(String[] args) {  
  19.         // TODO Auto-generated method stub  
  20.         String str="suolong2014version";  
  21.         System.out.println("测试明文["+str+"]");  
  22.         String basecode =Base64Util.encodeBase64(str);  
  23.         System.out.println("加密后["+basecode+"]");  
  24.           
  25.         if(basecode!=null){  
  26.             String res =Base64Util.decodeBase64(basecode);  
  27.             System.out.println("解密后["+res+"]");  
  28.         }  
  29.           
  30.           
  31.         /////////////////////////////////////////  
  32.         System.out.println("");  
  33.         System.out.println("N次加密测试--------");  
  34.         String basecodeN=Base64Util.encodeBase64(str, 2);  
  35.         String resN=Base64Util.decodeBase64(basecodeN, 2);  
  36.           
  37.         String basecodeN3=Base64Util.encodeBase64(str, 5);  
  38.         String resN3=Base64Util.decodeBase64(basecodeN3, 5);  
  39.           
  40.     }  
  41.   
  42.     //提供加密N次  
  43.     public static String encodeBase64(String mingwen,int times){  
  44.         int num=(times<=0)?1:times;  
  45.         String code="";  
  46.         if(mingwen==null||mingwen.equals("")){  
  47.               
  48.         }else{  
  49.             code=mingwen;  
  50.             for(int i=0;i<num;i++){  
  51.                 code=encodeBase64(code);  
  52.             }  
  53.             System.out.println("加密"+num+"次后["+code+"]");  
  54.         }  
  55.         return code;  
  56.     }  
  57.     //对应提供解密N次  
  58.     public static String decodeBase64(String mi,int times){  
  59.         int num=(times<=0)?1:times;  
  60.         String mingwen="";  
  61.         if(mi==null||mi.equals("")){  
  62.               
  63.         }else{  
  64.             mingwen=mi;  
  65.             for(int i=0;i<num;i++){  
  66.                 mingwen=decodeBase64(mingwen);  
  67.             }  
  68.             System.out.println("解密"+num+"次后["+mingwen+"]");  
  69.         }  
  70.         return mingwen;  
  71.     }  
  72.       
  73.     ///////////////////////////////////////////////////////////////////  
  74.     public static String encodeBase64(String mingwen){  
  75.         String code="";  
  76.         if(mingwen==null||mingwen.equals("")){  
  77.               
  78.         }else{  
  79.             BASE64Encoder encoder = new BASE64Encoder();  
  80.             try {  
  81.                 code=encoder.encode(mingwen.getBytes());  
  82.             } catch (Exception e) {  
  83.                 e.printStackTrace();  
  84.             }  
  85. //          System.out.println("加密后["+code+"]");  
  86.         }  
  87.         return code;  
  88.     }  
  89.       
  90.     public static String decodeBase64(String mi){  
  91.         String mingwen="";  
  92.         if(mi==null||mi.equals("")){  
  93.               
  94.         }else{  
  95.             BASE64Decoder decoder = new BASE64Decoder();  
  96.             try {  
  97.                 byte[] by = decoder.decodeBuffer(mi);  
  98.                 mingwen = new String(by);  
  99.             } catch (Exception e) {  
  100.                 e.printStackTrace();  
  101.             }  
  102. //          System.out.println("解密后["+mingwen+"]");  
  103.         }  
  104.         return mingwen;  
  105.     }  
  106. }  
  107.   
  108.   
  109. /*  
  110.   
  111.   
  112. 打印:  
  113.   
  114. 测试明文[suolong2014version]  
  115. 加密后[c3VvbG9uZzIwMTR2ZXJzaW9u]  
  116. 解密后[suolong2014version]  
  117.   
  118. N次加密测试--------  
  119. 加密2次后[YzNWdmJHOXVaekl3TVRSMlpYSnphVzl1]  
  120. 解密2次后[suolong2014version]  
  121. 加密5次后[VjFod1QxWXlVblJUYTJoUVYwWmFhRnBYZEhOTk1WSlhWV3hPVG1KSVFscFZNalYzWVVaYU5tSkVS  
  122. VDA9]  
  123. 解密5次后[suolong2014version]  
  124.   
  125. */  


从结果上看,jquery.base64.js加密解密和java的base64加密解密是一样的。




本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c++实现aes加密算法,对字符串进行加密
jQuery autoComplete 自动完成 支持中文
php 函数传值,传址,函数参数
Linux shell编程——if条件判断
Python 爬虫进阶|某著名人均百万问答社区 header 参数加密逻辑分析
MD5加密字符串处理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服