zoukankan      html  css  js  c++  java
  • [JavaScript] Base64加密解密

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title>js base64加密解密</title>
    </head>
    <body>
    <script>
    // 创建Base64对象
    var Base64 = {
     _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
     encode: function(e) {
      var t = "";
      var n, r, i, s, o, u, a;
      var f = 0;
      e = Base64._utf8_encode(e);
      while (f < e.length) {
       n = e.charCodeAt(f++);
       r = e.charCodeAt(f++);
       i = e.charCodeAt(f++);
       s = n >> 2;
       o = (n & 3) << 4 | r >> 4;
       u = (r & 15) << 2 | i >> 6;
       a = i & 63;
       if (isNaN(r)) {
        u = a = 64
       } else if (isNaN(i)) {
        a = 64
       }
       t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)
      }
      return t
     },
     decode: function(e) {
      var t = "";
      var n, r, i;
      var s, o, u, a;
      var f = 0;
      e=e.replace(/[^A-Za-z0-9+/=]/g,"");
      while (f < e.length) {
       s = this._keyStr.indexOf(e.charAt(f++));
       o = this._keyStr.indexOf(e.charAt(f++));
       u = this._keyStr.indexOf(e.charAt(f++));
       a = this._keyStr.indexOf(e.charAt(f++));
       n = s << 2 | o >> 4;
       r = (o & 15) << 4 | u >> 2;
       i = (u & 3) << 6 | a;
       t = t + String.fromCharCode(n);
       if (u != 64) {
        t = t + String.fromCharCode(r)
       }
       if (a != 64) {
        t = t + String.fromCharCode(i)
       }
      }
      t = Base64._utf8_decode(t);
      return t
     },
     _utf8_encode: function(e) {
      e = e.replace(/rn/g, "n");
      var t = "";
      for (var n = 0; n < e.length; n++) {
       var r = e.charCodeAt(n);
       if (r < 128) {
        t += String.fromCharCode(r)
       } else if (r > 127 && r < 2048) {
        t += String.fromCharCode(r >> 6 | 192);
        t += String.fromCharCode(r & 63 | 128)
       } else {
        t += String.fromCharCode(r >> 12 | 224);
        t += String.fromCharCode(r >> 6 & 63 | 128);
        t += String.fromCharCode(r & 63 | 128)
       }
      }
      return t
     },
     _utf8_decode: function(e) {
      var t = "";
      var n = 0;
      var r = c1 = c2 = 0;
      while (n < e.length) {
       r = e.charCodeAt(n);
       if (r < 128) {
        t += String.fromCharCode(r);
        n++
       } else if (r > 191 && r < 224) {
        c2 = e.charCodeAt(n + 1);
        t += String.fromCharCode((r & 31) << 6 | c2 & 63);
        n += 2
       } else {
        c2 = e.charCodeAt(n + 1);
        c3 = e.charCodeAt(n + 2);
        t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
        n += 3
       }
      }
      return t
     }
    }
    // 定义字符串
    var string = '/pic?6dd819ze9-=s40649459b';
    // 加密
    var encodedString = Base64.encode(string);
    console.log(encodedString);
    // 解密
    var decodedString = Base64.decode(encodedString);
    console.log(decodedString);
    </script>
    </body>
    </html>

  • 相关阅读:
    iOS NSPredicate和正则表达式
    Linux下网络socket编程——实现服务器(select)与多个客户端通信
    多线程有什么用?
    一句话说明白什么是面向对象
    (转)简单的Malloc实现
    动态内存管理:malloc/free/new/delete/brk/mmap
    Qt绘制中国象棋棋盘
    (转)Qt中文手册 之 QApplication
    Qt常用类——QFrame类与QWidge类
    Qt常用类——QWidget
  • 原文地址:https://www.cnblogs.com/frost-yen/p/12171826.html
Copyright © 2011-2022 走看看