微信小程序-base64加解密

news2025/1/18 5:30:11

思路:先创建一个base64.js的文件,这个文件可以作为专门加解密的文件模块,需要时就引用;创建好后,引用base64.js里的加解密函数。

注意:引用模块一定要引用正确的路径,否则会报错。

base64.js:

// 实现Base64加密
function base64Encode(str) {
  let base64 = new Base64();
  return base64.encode(str);
}

// 实现Base64解密
function base64Decode(str) {
  let base64 = new Base64();
  return base64.decode(str);
}

// 定义Base64对象
function Base64() {

  // Base64字符集
  const base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

  // 编码函数
  this.encode = function (str) {
    let result = '';
    for (let i = 0; i < str.length; i += 3) {
      let a = str.charCodeAt(i);
      let b = i + 1 < str.length ? str.charCodeAt(i + 1) : 0;
      let c = i + 2 < str.length ? str.charCodeAt(i + 2) : 0;

      let a1 = a >> 2, a2 = ((a & 3) << 4) | (b >> 4), a3 = ((b & 15) << 2) | (c >> 6), a4 = c & 63;

      result += base64Chars[a1] + base64Chars[a2] + (i + 1 < str.length ? base64Chars[a3] : '=') + (i + 2 < str.length ? base64Chars[a4] : '=');
    }
    return result;
  }

  // 解码函数
  this.decode = function (str) {
    let result = '';
    let i = 0;
    while (i < str.length) {
      let a = base64Chars.indexOf(str.charAt(i++));
      let b = base64Chars.indexOf(str.charAt(i++));
      let c = base64Chars.indexOf(str.charAt(i++));
      let d = base64Chars.indexOf(str.charAt(i++));

      let a1 = (a << 2) | (b >> 4);
      let a2 = ((b & 15) << 4) | (c >> 2);
      let a3 = ((c & 3) << 6) | d;

      result += String.fromCharCode(a1);
      if (c != 64) {
        result += String.fromCharCode(a2);
      }
      if (d != 64) {
        result += String.fromCharCode(a3);
      }
    }
    return result;
  }
}

// 向外暴露方法
module.exports = {
  base64Encode: base64Encode,
  base64Decode: base64Decode
}

在待加解密文件中,引用base64.js模块

const base64 = require('./base64');
      //从缓存中取出token
      let tokened = wx.getStorageSync('token');
      console.log("tokened:",tokened);
      //对token进行处理,解析token,因为设置原因,我的token解码位置特殊
      // 进行分割+格式化
      let userinfo = tokened.split('-')[1];
      console.log("userinfo-token》》》》》",userinfo)
      // 解码base64
      let rawStr= base64.base64Decode(userinfo);
      //var data= JSON.parse(rawStr);
      console.log('base64解码后的字符串: ',rawStr);
      //截取解码后的字符串
      let rawObj = rawStr.slice(0,-2);
      console.log('字符串转为数组: ',JSON.parse(rawObj));
      let QEUID = JSON.parse(rawObj).UID;
      console.log("用户ID:"+QEUID);

最终结果

参考:https://juejin.cn/post/7229512717135527991

PHP中 base64_decode与base64_encode加密解密函数

base64_encode是加密
base64_encode    语法:string base64_encode(string data);
 
$string='www.zhix.net智昕网络'; //定义字符串
 
echo base64_encode($string);  // 输出编码后的内容为 d3d3LnpoaXgubmV05pm65piV572R57uc

base64_decode是解密 
base64_decode    语法:string base64_decode(string data);
 
$string='d3d3LnpoaXgubmV05pm65piV572R57uc';     //定义字符串
 
echo base64_decode($string); //输出解码后的内容 www.zhix.net智昕网络


   参考:https://blog.csdn.net/fujian9544/article/details/111590073

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2278308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UllnnovationHub,一个开源的WPF控件库

目录 UllnnovationHub1.项目概述2.开发环境3.使用方法4.项目简介1.控件样式1.Button2.GroupBox3.TabControl4.RadioButton5.SwitchButton6.TextBox7.PasswordBox8.CheckBox9.DateTimePicker10.Expander11.Card12.ListBox13.Treeview14.Combox15.Separator16.ListView17.DataGri…

备份和容灾之区别(The Difference between Backup and Disaster Recovery)

备份和容灾之区别 备份和容灾都是数据安全常见的保障手段&#xff0c;但是一般在正常业务运行时是无需用到这两个技术手段的。只有在业务已经崩溃&#xff0c;需要进行业务恢复时&#xff0c;这两种技术的价值才能真正体现。所以&#xff0c;备份和容灾可以说是数据安全最后两…

Linux和Docker常用终端命令:保姆级图文详解

文章目录 前言1、Docker 常用命令1.1、镜像管理1.2、容器管理1.3、网络管理1.4、数据卷管理1.5、监控和性能管理 2、Linux 常用命令分类2.1、文件和目录管理2.2、用户管理2.3、系统监控和性能2.4、软件包管理2.5、网络管理 前言 亲爱的家人们&#xff0c;创作很不容易&#xf…

GPU 硬件原理架构(一)

这张费米管线架构图能看懂了&#xff0c;整个GPU的架构基本就熟了。市面上有很多GPU厂家&#xff0c;他们产品的架构各不相同&#xff0c;但是核心往往差不多&#xff0c;整明白一了个基本上就可以触类旁通了。下面这张图信息量很大&#xff0c;可以结合博客GPU 英伟达GPU架构回…

强化学习的数学原理(十-1)Actor-Critic初步

Actor-Critic的方法是PG方法的一种&#xff0c;它把PG方法与value function结合起来了。 一、基本介绍 Actor&#xff1a;代表 policy update。算法中采用Actor来产生动作。 Critic&#xff1a;代表 policy evaluation 或者 value estimation。算法中采用Critic来评价policy…

工具推荐:PDFgear——免费且强大的PDF编辑工具 v2.1.12

PDFgear——免费且强大的PDF编辑工具 v2.1.12 软件简介 PDFgear 是一款 完全免费的 PDF 软件&#xff0c;支持 阅读、编辑、转换、合并 以及 跨设备签署 PDF 文件&#xff0c;无需注册即可使用。它提供了丰富的 PDF 处理功能&#xff0c;极大提升了 PDF 文件管理的便捷性和效…

IIO(Industrial I/O)驱动介绍

文章目录 IIO&#xff08;Industrial I/O&#xff09;驱动是Linux内核中用于工业I/O设备的子系统&#xff0c;主要用于处理传感器数据采集和转换。以下是其关键点&#xff1a; 功能 数据采集&#xff1a;从传感器读取数据。数据处理&#xff1a;对原始数据进行滤波、校准等操作…

Realsense相机驱动安装及其ROS通讯配置——机器人抓取系统基础系列(四)

文章目录 概要1 Realsense相机驱动安装Method1: 使用Intel服务器预编译包Method2: 使用ROS服务器预编译包Method3: 使用SDK源代码方法对比总结 2 Realsense-ROS通讯配置与使用2.1 Realsense-ROS包安装2.2 ROS节点启动 小结Reference 概要 本文首先阐述了Realsense相机驱动安装…

vscode配置opencv4.8环境

1 安装cmake 下载链接如下https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-windows-x86_64.zip 解压后放到指定目录后&#xff0c;添加bin目录到环境变量即可。 2 mingw安装 下载链接如下(下图的x86_64-posix-sjlj)&#xff1a; Download x86_6…

软件测试 —— Selenium(等待)

软件测试 —— Selenium&#xff08;等待&#xff09; 一个例子强制等待使用示例&#xff1a;为什么不推荐使用强制等待&#xff1f;更好的选择 隐式等待 implicitly_wait&#xff08;&#xff09;隐式等待和强制等待的区别隐式等待&#xff08;Implicit Wait&#xff09;强制等…

自动化之Ansible

一、Ansible介绍 Ansible是一个同时管理多个远程主机的软件(任何可以通过SSH协议登录的机器)&#xff0c;因此Ansible可以管理 运程虚拟机、物理机&#xff0c;也可以是本地主机(linux、windows)。 Ansible通过SSH协议实现 管理节点、远程节点的通信。 只要是能够SSH登录的主机…

算法(蓝桥杯)贪心算法4——拦截导弹的系统数量求解

题目描述 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。 假设某天雷达捕捉到敌国的导弹来袭。由于该系统还在试用…

一些常见的Java面试题及其答案

Java基础 1. Java中的基本数据类型有哪些&#xff1f; 答案&#xff1a;Java中的基本数据类型包括整数类型&#xff08;byte、short、int、long&#xff09;、浮点类型&#xff08;float、double&#xff09;、字符类型&#xff08;char&#xff09;和布尔类型&#xff08;boo…

初学stm32 --- CAN

目录 CAN介绍 CAN总线拓扑图 CAN总线特点 CAN应用场景 CAN物理层 CAN收发器芯片介绍 CAN协议层 数据帧介绍 CAN位时序介绍 数据同步过程 硬件同步 再同步 CAN总线仲裁 STM32 CAN控制器介绍 CAN控制器模式 CAN控制器模式 CAN控制器框图 发送处理 接收处理 接收过…

Golang笔记——协程同步

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Golang的协程同步的实现和应用场景。 文章目录 协程同步是什么&#xff1f;为什么需要协程同步&#xff1f;常见的协程同步机制互斥锁&#xff0…

Visual Studio Community 2022(VS2022)安装方法

废话不多说直接上图&#xff1a; 直接上步骤&#xff1a; 1&#xff0c;首先可以下载安装一个Visual Studio安装器&#xff0c;叫做Visual Studio installer。这个安装文件很小&#xff0c;很快就安装完成了。 2&#xff0c;打开Visual Studio installer 小软件 3&#xff0c…

目标检测新视野 | YOLO、SSD与Faster R-CNN三大目标检测模型深度对比分析

目录 引言 YOLO系列 网络结构 多尺度检测 损失函数 关键特性 SSD 锚框设计 损失函数 关键特性 Faster R-CNN 区域建议网络&#xff08;RPN&#xff09; 两阶段检测器 损失函数 差异分析 共同特点 基于深度学习 目标框预测 损失函数优化 支持多类别检测 应…

mac intel芯片下载安卓模拟器

一、调研 目前主流两个模拟器&#xff1a; 雷神模拟器 不支持macosmumu模拟器pro版 不支持macos intel芯片 搜索到mumu的Q&A中有 “Intel芯片Mac如何安装MuMu&#xff1f;” q&a&#x1f517;&#xff1a;https://mumu.163.com/mac/faq/install-on-intel-mac.html 提…

发送dubbo接口

史上最强&#xff0c;Jmeter接口测试-dubbo接口实战&#xff08;超级详细&#xff09;_jmeter调用dubbo接口-CSDN博客 干货分享&#xff1a;Dubbo接口及测试总结~ 谁说dubbo接口只能Java调用&#xff0c;我用Python也能轻松搞定 telnet xxx.xxx.xxx.xxx 端口号 再回车显示dub…

Leetcode 91. 解码方法 动态规划

原题链接&#xff1a;Leetcode 91. 解码方法 自己写的代码&#xff1a; class Solution { public:int numDecodings(string s) {int ns.size();vector<int> dp(n,1);if(s[n-1]0) dp[n-1]0;for(int in-2;i>0;i--){if(s[i]!0){string ts.substr(i,2);int tmpatoi(t.c…