Skip to content

编码(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=="

工作原理

  1. 对原始文本中的每个字符与十六进制值 0xA5 进行异或运算
  2. 将混淆后的字符串转换为 Base64 编码
  3. 支持处理包含非 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!"

工作原理

  1. 将 Base64 编码的字符串解码
  2. 对解码后的每个字符与十六进制值 0xA5 进行异或运算(利用异或运算的自反性)
  3. 还原出原始文本

注意事项

  1. 安全性考虑

    • 这种加密方法属于轻量级混淆,不适用于高安全性要求的场景
    • 不建议用于存储敏感信息或密码等关键数据
  2. 兼容性

    • 依赖 js-base64 库来处理 Base64 编码和解码
    • 支持包含 Unicode 字符的字符串
  3. 错误处理

    • 加密和解密过程中的错误会被捕获并抛出带有描述性消息的错误
  4. 性能

    • 对于非常长的字符串,处理可能会消耗更多资源
    • 对于一般应用场景下的文本长度,性能影响可以忽略不计

适用场景

  • 客户端存储非敏感但不希望明文显示的数据
  • 前端临时数据的简单保护
  • 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"
}

Released under the MIT License.