当前位置:Gxlcms > JavaScript > base64实现加密解密功能

base64实现加密解密功能

时间:2021-07-01 10:21:17 帮助过:82人阅读

这次给大家带来base64实现加密解密功能,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. </head>
  8. <body>
  9. <input id="path"name="path"type="hidden"value="haha"></input>
  10. <input id="putcardno01"name="putcardno01"type="text"size="65"value=""></input>
  11. <br>
  12. <input onclick="subfunc();"class="btn1"value="提交加密" type="button"></input>
  13. <br>
  14. 加密后:<input id="putcardno02"name="putcardno02"type="text"size="65"value=""></input>
  15. <br>
  16. <input onclick="subfunc02();"class="btn1"value="提交解密" type="button"></input>
  17. <br>
  18. <br>
  19. <hr>
  20. <input onclick="subfunc03();"class="btn1"value="提交N次加密" type="button"></input>
  21. <br>
  22. 加密后:<input id="putcardno03"name="putcardno03"type="text"size="65"value=""></input>
  23. <br>
  24. <input onclick="subfunc04();"class="btn1"value="提交N次解密" type="button"></input>
  25. <br>
  26. <br>
  27. <input onclick="clearrr();"class="btn1"value="清除" type="button"></input>
  28. <br>
  29. <textarea id='txt'cols="75"rows="19"></textarea>
  30. </body>
  31. <script language="javascript">
  32. varpath=document.getElementById("path").value;
  33. functionapp(info){
  34. $("#txt").val($("#txt").val()+'\n'+info);
  35. }
  36. functionsubfunc(){
  37. varput1=$.trim($("#putcardno01").val());
  38. // var estxt=$.base64.encode(put1);
  39. //var estxt=$.base64.btoa(put1);
  40. varestxt=encodeBase64(put1);
  41. $("#putcardno02").val(estxt);
  42. app("加密后["+estxt+"]");
  43. }
  44. functionsubfunc02(){
  45. varput1=$.trim($("#putcardno02").val());
  46. //var estxt=$.base64.decode(put1);
  47. //var estxt=$.base64.atob(put1);
  48. varestxt=decodeBase64(put1);
  49. app("解密后["+estxt+"]");
  50. }
  51. //////////////////////////////////////////
  52. varnumTimes=5;
  53. functionsubfunc03(){
  54. varput1=$.trim($("#putcardno01").val());
  55. // var estxt=$.base64.encode(put1);
  56. //var estxt=$.base64.btoa(put1);
  57. //estxt=$.base64.btoa(estxt);
  58. estxt=encodeBase64(put1,numTimes);
  59. $("#putcardno03").val(estxt);
  60. app(numTimes+"次加密后["+estxt+"]");
  61. }
  62. functionsubfunc04(){
  63. varput1=$.trim($("#putcardno03").val());
  64. //var estxt=$.base64.decode(put1);
  65. //var estxt=$.base64.atob(put1);
  66. //estxt=$.base64.atob(estxt);
  67. estxt=decodeBase64(put1,numTimes);
  68. app(numTimes+"次解密后["+estxt+"]");
  69. }
  70. functionclearrr(){
  71. $("#putcardno02").val("");
  72. $("#putcardno03").val("");
  73. $("#putcardno04").val("");
  74. $("#txt").val("");
  75. }
  76. //加密方法。没有过滤首尾空格,即没有trim.
  77. //加密可以加密N次,对应解密N次就可以获取明文
  78. functionencodeBase64(mingwen,times){
  79. varcode="";
  80. varnum=1;
  81. if(typeoftimes=='undefined'||times==null||times==""){
  82. num=1;
  83. }else{
  84. varvt=times+"";
  85. num=parseInt(vt);
  86. }
  87. if(typeofmingwen=='undefined'||mingwen==null||mingwen==""){
  88. }else{
  89. $.base64.utf8encode =true;
  90. code=mingwen;
  91. for(vari=0;i<num;i++){
  92. code=$.base64.btoa(code);
  93. }
  94. }
  95. returncode;
  96. }
  97. //解密方法。没有过滤首尾空格,即没有trim
  98. //加密可以加密N次,对应解密N次就可以获取明文
  99. functiondecodeBase64(mi,times){
  100. varmingwen="";
  101. varnum=1;
  102. if(typeoftimes=='undefined'||times==null||times==""){
  103. num=1;
  104. }else{
  105. varvt=times+"";
  106. num=parseInt(vt);
  107. }
  108. if(typeofmi=='undefined'||mi==null||mi==""){
  109. }else{
  110. $.base64.utf8encode =true;
  111. mingwen=mi;
  112. for(vari=0;i<num;i++){
  113. mingwen=$.base64.atob(mingwen);
  114. }
  115. }
  116. returnmingwen;
  117. }
  118. /*
  119. 测试
  120. 输入 suolong2014version
  121. 加密后[c3VvbG9uZzIwMTR2ZXJzaW9u]
  122. 解密后[suolong2014version]
  123. 5次加密后[VjFod1QxWXlVblJUYTJoUVYwWmFhRnBYZEhOTk1WSlhWV3hPVG1KSVFscFZNalYzWVVaYU5tSkVSVDA9]
  124. 5次解密后[suolong2014version]
  125. */
  126. </script>

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

我们测试一下:

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

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

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

jQuery做出页面遮罩层效果

在jquery中怎么使用键盘事件

以上就是base64实现加密解密功能的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行