编码(encode)、混淆(encryption)工具函数使用文档
本文档介绍了基于 Base64 编码和简单混淆算法的加密解密工具函数。这些函数提供了一种简单的方式来对字符串进行轻量级加密,适用于需要基础数据保护的场景。
引入方式
javascript
import { shuffleBase64Encode, shuffleBase64Decode } from '@pt/utils/modules/encode';加密函数:shuffleBase64Encode
这个函数将原始文本进行简单混淆处理后转换为 Base64 编码的字符串。
函数签名
typescript
function shuffleBase64Encode(originalText: string): string参数
originalText(string): 需要加密的原始文本
返回值
- 返回加密后的 Base64 编码字符串
使用示例
javascript
import { shuffleBase64Encode } from '@pt/utils/modules/encode';
const originalMessage = "Hello, World!";
const encryptedMessage = shuffleBase64Encode(originalMessage);
console.log(encryptedMessage); // 输出加密后的字符串,如:"8/Lz4Ozg9O3s7O344A=="工作原理
- 对原始文本中的每个字符与十六进制值
0xA5进行异或运算 - 将混淆后的字符串转换为 Base64 编码
- 支持处理包含非 ASCII 字符的 UTF-8 字符串
解密函数:shuffleBase64Decode
这个函数将 Base64 编码的加密字符串解密还原为原始文本。
函数签名
typescript
function shuffleBase64Decode(base64Encoded: string): string参数
base64Encoded(string): 通过shuffleBase64Encode加密后的 Base64 编码字符串
返回值
- 返回解密后的原始文本
使用示例
javascript
import { shuffleBase64Decode } from '@pt/utils/modules/encode';
const encryptedMessage = "8/Lz4Ozg9O3s7O344A==";
const decryptedMessage = shuffleBase64Decode(encryptedMessage);
console.log(decryptedMessage); // 输出: "Hello, World!"工作原理
- 将 Base64 编码的字符串解码
- 对解码后的每个字符与十六进制值
0xA5进行异或运算(利用异或运算的自反性) - 还原出原始文本
注意事项
安全性考虑:
- 这种加密方法属于轻量级混淆,不适用于高安全性要求的场景
- 不建议用于存储敏感信息或密码等关键数据
兼容性:
- 依赖
js-base64库来处理 Base64 编码和解码 - 支持包含 Unicode 字符的字符串
- 依赖
错误处理:
- 加密和解密过程中的错误会被捕获并抛出带有描述性消息的错误
性能:
- 对于非常长的字符串,处理可能会消耗更多资源
- 对于一般应用场景下的文本长度,性能影响可以忽略不计
适用场景
- 客户端存储非敏感但不希望明文显示的数据
- 前端临时数据的简单保护
- URL 参数或 localStorage 中存储的信息轻度混淆
- 防止数据被简单的肉眼查看和理解
示例应用
javascript
// 加密用户偏好设置
const userPreferences = {
theme: 'dark',
fontSize: 'large',
showNotifications: true
};
// 将对象转为 JSON 字符串并加密
const encrypted = shuffleBase64Encode(JSON.stringify(userPreferences));
localStorage.setItem('userPrefs', encrypted);
// 稍后读取并解密
const storedPrefs = localStorage.getItem('userPrefs');
if (storedPrefs) {
const decrypted = shuffleBase64Decode(storedPrefs);
const parsedPrefs = JSON.parse(decrypted);
console.log(parsedPrefs.theme); // 输出: "dark"
}