JS前台加密,java后台解密实现

因项目需求,需要对用户信息进行加密(以登录为例),前台js中对用户名密码进行加密传输。

然后后台进行解密操作 先看一下效果图


未对其加密传输



对其加密传输



从以上可以看出如果不对其进行加密的话,用户的一些敏感信息将会被捕捉到


1.前台JS

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <script type="text/javascript">  
  2.     $(function() {  
  3.         $("#btn").click(function() {  
  4.             var username = encode64($("#username").val());  //对数据加密  
  5.             var password = encode64($("#password").val());  
  6.             $("#username").val(username);  
  7.             $("#password").val(password);  
  8.             document.fm.submit();  //fm为form表单name  
  9.         })  
  10.     })  
  11.       
  12.     // base64加密开始  
  13.     var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv"  
  14.             + "wxyz0123456789+/" + "=";  
  15.       
  16.     function encode64(input) {  
  17.   
  18.         var output = "";  
  19.         var chr1, chr2, chr3 = "";  
  20.         var enc1, enc2, enc3, enc4 = "";  
  21.         var i = 0;  
  22.         do {  
  23.             chr1 = input.charCodeAt(i++);  
  24.             chr2 = input.charCodeAt(i++);  
  25.             chr3 = input.charCodeAt(i++);  
  26.             enc1 = chr1 >> 2;  
  27.             enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);  
  28.             enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);  
  29.             enc4 = chr3 & 63;  
  30.             if (isNaN(chr2)) {  
  31.                 enc3 = enc4 = 64;  
  32.             } else if (isNaN(chr3)) {  
  33.                 enc4 = 64;  
  34.             }  
  35.             output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)  
  36.                     + keyStr.charAt(enc3) + keyStr.charAt(enc4);  
  37.             chr1 = chr2 = chr3 = "";  
  38.             enc1 = enc2 = enc3 = enc4 = "";  
  39.         } while (i < input.length);  
  40.   
  41.         return output;  
  42.     }  
  43.     // base64加密结束  
  44. </script>  



2、后台java代码

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. private static char[] base64EncodeChars = new char[] { 'A''B''C''D',  
  2.         'E''F''G''H''I''J''K''L''M''N''O''P''Q',  
  3.         'R''S''T''U''V''W''X''Y''Z''a''b''c''d',  
  4.         'e''f''g''h''i''j''k''l''m''n''o''p''q',  
  5.         'r''s''t''u''v''w''x''y''z''0''1''2''3',  
  6.         '4''5''6''7''8''9''+''/', };  
  7.   
  8. private static byte[] base64DecodeChars = new byte[] { -1, -1, -1, -1, -1,  
  9.         -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  
  10.         -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  
  11.         -1, -1, -1, -162, -1, -1, -1635253545556575859,  
  12.         6061, -1, -1, -1, -1, -1, -1, -10123456789,  
  13.         10111213141516171819202122232425, -1,  
  14.         -1, -1, -1, -1, -1262728293031323334353637,  
  15.         3839404142434445464748495051, -1, -1, -1,  
  16.         -1, -1 };  
  17.   
  18. /** 
  19.  * 解密 
  20.  * @param str 
  21.  * @return 
  22.  */  
  23. public static byte[] decode(String str) {  
  24.     byte[] data = str.getBytes();  
  25.     int len = data.length;  
  26.     ByteArrayOutputStream buf = new ByteArrayOutputStream(len);  
  27.     int i = 0;  
  28.     int b1, b2, b3, b4;  
  29.   
  30.     while (i < len) {  
  31.         do {  
  32.             b1 = base64DecodeChars[data[i++]];  
  33.         } while (i < len && b1 == -1);  
  34.         if (b1 == -1) {  
  35.             break;  
  36.         }  
  37.   
  38.         do {  
  39.             b2 = base64DecodeChars[data[i++]];  
  40.         } while (i < len && b2 == -1);  
  41.         if (b2 == -1) {  
  42.             break;  
  43.         }  
  44.         buf.write((int) ((b1 << 2) | ((b2 & 0x30) >>> 4)));  
  45.   
  46.         do {  
  47.             b3 = data[i++];  
  48.             if (b3 == 61) {  
  49.                 return buf.toByteArray();  
  50.             }  
  51.             b3 = base64DecodeChars[b3];  
  52.         } while (i < len && b3 == -1);  
  53.         if (b3 == -1) {  
  54.             break;  
  55.         }  
  56.         buf.write((int) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2)));  
  57.   
  58.         do {  
  59.             b4 = data[i++];  
  60.             if (b4 == 61) {  
  61.                 return buf.toByteArray();  
  62.             }  
  63.             b4 = base64DecodeChars[b4];  
  64.         } while (i < len && b4 == -1);  
  65.         if (b4 == -1) {  
  66.             break;  
  67.         }  
  68.         buf.write((int) (((b3 & 0x03) << 6) | b4));  
  69.     }  
  70.     return buf.toByteArray();  
  71. }  

System.out.println(new String(decode(username)));  // 使用decode()方法进行解密

转自http://blog.csdn.net/itmyhome1990/article/details/44860469

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值