微信小程序base64加密,解码

这是一个JavaScript实现的Base64编码和解码函数库,包括_encode和_decode方法,用于对字符串进行Base64转换。函数支持UTF-8和UTF-16之间的转换,且可通过module.exports导出供其他模块使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

base64.js

// base64.js
var base64 = {
  _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
  encode (str) { // 加密
    var output = "";
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
    var i = 0;
    str = this._utf16to8(str);
    while (i < str.length) {
      chr1 = str.charCodeAt(i++);
      chr2 = str.charCodeAt(i++);
      chr3 = str.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 + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
    } return output;
  },
  decode (input) { // 解密
    var output = "";
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
    while (i < input.length) {
        enc1 = this._keyStr.indexOf(input.charAt(i++));
        enc2 = this._keyStr.indexOf(input.charAt(i++));
        enc3 = this._keyStr.indexOf(input.charAt(i++));
        enc4 = this._keyStr.indexOf(input.charAt(i++));
        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;
        output = output + String.fromCharCode(chr1);
        if (enc3 != 64) {
            output = output + String.fromCharCode(chr2);
        }
        if (enc4 != 64) {
            output = output + String.fromCharCode(chr3);
        }
    } return this._utf8to16(output);
  },
  _utf16to8: function(str) {
    var out, i, len, c;
    out = "";
    len = str.length;
    for(i = 0; i < len; i++) {
        c = str.charCodeAt(i);
        if ((c >= 0x0001) && (c <= 0x007F)) {
            out += str.charAt(i);
        } else if (c > 0x07FF) {
            out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
            out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
            out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
        } else {
            out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
            out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
        }
    }
    return out;
  },
  _utf8to16 (str) { 
    var out, i, len, c;
    var char2, char3;
    out = "";
    len = str.length;
    i = 0;
    while(i < len) {
        c = str.charCodeAt(i++);
        switch(c >> 4)
        {
            case 0: case 1: case 2: case 3: case 4: case 5: case 6:case7:
              out += str.charAt(i-1);
            break;
            case 12: case 13:
              char2 = str.charCodeAt(i++);
              out += String.fromCharCode(((c & 0x1F) << 6) | (char2&0x3F));
            break;
            case 14:
              char2 = str.charCodeAt(i++);
              char3 = str.charCodeAt(i++);
              out += String.fromCharCode(((c & 0x0F) << 12) |
                ((char2 & 0x3F) << 6) |
                ((char3 & 0x3F) << 0));
            break;
        }
    } return out;
  }
}
module.exports = base64

页面使用

let base64 = require("../../../utils/base64")
 base64.decode(需要解密的内容)  //解密
 base64.encode(需要加密的内容)  //加密

### 实现Base64编码在UniApp中的应用 为了实现在 UniApp 开发的微信小程序中使用 Base64 编码,可以采用 JavaScript 原生的方式来进行字符串到 Base64 的转换以及解码操作。对于更复杂的需求或是希望简化开发过程的情况,则可以选择合适的第三方库来辅助完成。 #### 方法一:利用JavaScript内置函数 JavaScript 提供了两个非常方便的方法 `btoa()` 和 `atob()` 来处理 base64 编码和解码工作: - **编码**: 将普通文本转成 base64 字符串。 ```javascript function encodeToBase64(str) { try { return btoa(unescape(encodeURIComponent(str))); } catch (e) { console.error('Error during encoding:', e); throw new Error('Encoding failed'); } } ``` - **解码**: 把 base64 字符串还原回原始数据。 ```javascript function decodeFromBase64(base64Str) { try { return decodeURIComponent(escape(atob(base64Str))); } catch (e) { console.error('Error during decoding:', e); throw new Error('Decoding failed'); } } ``` 这种方法简单易懂,并且不需要额外安装任何依赖项就可以直接应用于项目之中[^1]。 #### 方法二:借助外部库 如果想要更加灵活地管理和优化性能表现,也可以考虑引入一些成熟的 npm 包比如 [js-base64](https://github.com/davidchambers/Base64.js),它提供了更为全面的功能支持和服务端环境下的兼容性解决方案。 首先通过命令行工具安装该包: ```bash npm install js-base64 --save ``` 接着可以在项目的合适位置导入并使用此模块: ```javascript import { Base64 } from 'js-base64'; // 对象形式访问静态方法 const encodedData = Base64.encode('Hello, world!'); console.log(encodedData); // 输出:"SGVsbG8sIHdvcmxkIQ==" const decodedString = Base64.decode(encodedData); console.log(decodedString); // 输出:"Hello, world!" ``` 这种方式不仅能够满足基本需求,还允许开发者根据实际情况调整配置选项以适应不同场景的要求[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值