【base64加密】js/ts的基础加密

news/2024/12/23 6:16:19/

base64的字符串简单加密,主用于网页缓存数据的加密。

适用于常规html、小游戏(egret、cocos、laya)等

原文参考:JS基于base64编码加密解密文本和图片(修订)_js base64加密-CSDN博客

测试:JS实现base64加密解密的方法 - web开发 - 亿速云


export class Base64 {private static _keyStr: string = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";/**字符串加密*/public static encode(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}/**字符串解密*/public static decode(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}private static _utf8_encode(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}private static _utf8_decode(e) {let t = "";let n = 0;let r = 0;let c1 = 0;let c2 = 0;let c3 = 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}
}

使用方法:

    const num = Base64.encode(this.editBox.string);Log.log("jia mi:", num)const num = Base64.decode(this.editBox.string);Log.log("解密:", num)


http://www.ppmy.cn/news/1187767.html

相关文章

使用logback按天生成日志并按等级进行分类

先看效果---->>>> 按照&#xff1a;error、info、warn进行分类&#xff1a; 每个文件里面按日期进行分类&#xff1a; 其中对应的Maven如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven…

新建包含cuda和cudnn的docker

背景&#xff1a;服务器的cudnn版本太低了&#xff0c;没有权限去修改。故新建包含cuda和cudnn的docker 步骤 一、拉取镜像及创建docker 拉取相关的镜像 从镜像列表选出相关版本的镜像https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md …

豪车托运为什么选小板

小板运输是一种适用于豪车客户的高效运输方式。它提供了快速、安全、便捷的服务&#xff0c;并且相对经济实惠。以下是关于小板运输的时效和价格的介绍&#xff1a; 时效&#xff1a;小板运输通常能够在短时间内完成车辆的运输。具体时效取决于起点和目的地之间的距离&#xff…

Hi3516DV500部署paddle版型分析模型记录

原版模型测试并导出onnx paddle 版面分析-> https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppstructure/layout/README_ch.md 测试 python3 deploy/python/infer.py \ --model_dirmodel/picodet_lcnet_x1_0_fgd_layout_cdla_infer/ \ --image_fil…

C语言数据结构-----顺序表(多功能动态顺序表的代码实现)

前言 本篇讲述了顺序表的相关知识&#xff0c;以及动态顺序表的代码实现。 文章目录 前言1.线性表2.顺序表2.1 静态顺序表2.2 动态顺序表 3动态顺序表代码详解3.1 顺序表功能(头文件)3.2 各功能函数3.2.1 初始化顺序表3.2.2 摧毁顺序表3.2.3 打印顺序表3.2.4 检测顺序表的容量…

IDEA优雅自动生成类注释和快捷键生成方法注释

生成类注释 Preferences->Editor->File and Code Templates-> Includes ->File Header 注释模板&#xff1a; /*** Classname ${NAME}* Description ${description}* Date ${DATE} ${TIME}* Created by ZouLiPing*/生成方法和字段注释 查看IDEA自动配置java快捷…

【申博榜单好刊】1区TOP,IF18.6,1个月22天录用,4天见刊!(国人友好)

计算机领域 • 好刊解读 今天小编带来Elsevier旗下计算机领域好刊的解读&#xff0c;如有相关领域作者有意向投稿&#xff0c;可作为重点关注&#xff01;后文有同领域快刊发表案例&#xff0c;供您投稿参考~ 01 期刊简介 Information Fusion ☑️出版社&#xff1a;Elsevie…

如何理解 Spring Boot 中的 Starter?

Starter 是 Spring Boot 的四大核心功能特性之一&#xff0c;除此之外,Spring Boot 还有自动装配、Actuator 监控等特性。Spring Boot 里面的这些特性&#xff0c;都是为了让开发者在开发基于 Spring 生态下的企业级应用时&#xff0c;只需要关心业务逻辑&#xff0c;减少对配置…