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

    xiaoxiao2021-03-25  77

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

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

    未对其加密传输

    对其加密传输

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

    1.前台JS

    [javascript]  view plain  copy   <script type="text/javascript">       $(function() {           $("#btn").click(function() {               var username = encode64($("#username").val());  //对数据加密               var password = encode64($("#password").val());               $("#username").val(username);               $("#password").val(password);               document.fm.submit();  //fm为form表单name           })       })              // base64加密开始       var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv"               + "wxyz0123456789+/" + "=";              function encode64(input) {              var output = "";           var chr1, chr2, chr3 = "";           var enc1, enc2, enc3, enc4 = "";           var i = 0;           do {               chr1 = input.charCodeAt(i++);               chr2 = input.charCodeAt(i++);               chr3 = input.charCodeAt(i++);               enc1 = chr1 >> 2;               enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);               enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);               enc4 = chr3 & 63;               if (isNaN(chr2)) {                   enc3 = enc4 = 64;               } else if (isNaN(chr3)) {                   enc4 = 64;               }               output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)                       + keyStr.charAt(enc3) + keyStr.charAt(enc4);               chr1 = chr2 = chr3 = "";               enc1 = enc2 = enc3 = enc4 = "";           } while (i < input.length);              return output;       }       // base64加密结束   </script>  

    2、后台java代码

    [java]  view plain  copy   private static char[] base64EncodeChars = new char[] { 'A''B''C''D',           'E''F''G''H''I''J''K''L''M''N''O''P''Q',           'R''S''T''U''V''W''X''Y''Z''a''b''c''d',           'e''f''g''h''i''j''k''l''m''n''o''p''q',           'r''s''t''u''v''w''x''y''z''0''1''2''3',           '4''5''6''7''8''9''+''/', };      private static byte[] base64DecodeChars = new byte[] { -1, -1, -1, -1, -1,           -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,           -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,           -1, -1, -1, -162, -1, -1, -1635253545556575859,           6061, -1, -1, -1, -1, -1, -1, -10123456789,           10111213141516171819202122232425, -1,           -1, -1, -1, -1, -1262728293031323334353637,           3839404142434445464748495051, -1, -1, -1,           -1, -1 };      /**   * 解密   * @param str   * @return   */   public static byte[] decode(String str) {       byte[] data = str.getBytes();       int len = data.length;       ByteArrayOutputStream buf = new ByteArrayOutputStream(len);       int i = 0;       int b1, b2, b3, b4;          while (i < len) {           do {               b1 = base64DecodeChars[data[i++]];           } while (i < len && b1 == -1);           if (b1 == -1) {               break;           }              do {               b2 = base64DecodeChars[data[i++]];           } while (i < len && b2 == -1);           if (b2 == -1) {               break;           }           buf.write((int) ((b1 << 2) | ((b2 & 0x30) >>> 4)));              do {               b3 = data[i++];               if (b3 == 61) {                   return buf.toByteArray();               }               b3 = base64DecodeChars[b3];           } while (i < len && b3 == -1);           if (b3 == -1) {               break;           }           buf.write((int) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2)));              do {               b4 = data[i++];               if (b4 == 61) {                   return buf.toByteArray();               }               b4 = base64DecodeChars[b4];           } while (i < len && b4 == -1);           if (b4 == -1) {               break;           }           buf.write((int) (((b3 & 0x03) << 6) | b4));       }       return buf.toByteArray();   }  

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

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

    转载请注明原文地址: https://ju.6miu.com/read-13593.html

    最新回复(0)