更新记录

0.1.8(2025-08-03)

  • feat: HmacSHA256HmacSHA1key改为联合类型string|WordArray

0.1.7(2025-07-22)

  • feat: 增加RSA

0.1.6(2025-07-17)

  • feat : 增加DES
查看更多

平台兼容性

云端兼容性

阿里云 腾讯云 支付宝云

uni-app(4.44)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
5.0
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - -

uni-app x(4.61)

Chrome Safari Android iOS 鸿蒙 微信小程序
5.0

lime-crypto 加密

一个UTS版的cryptoJs加密库,支持MD5、SHA1、SHA256、SHA512、AES、DES等加密算法,兼容uniapp/uniappx(iOS、Web、Android、鸿蒙、小程序)。

功能概述

本模块提供以下加密功能:

  • 哈希算法(MD5/SHA1/SHA256/SHA512)
  • HMAC-SHA256/HMAC-SHA1 签名
  • AES 对称加密(支持多种模式和填充方案)
  • DES 对称加密
  • RSA 非对称加密,密钥对生成(2048位
  • 多种编码格式转换(UTF8/Hex/Base64等)

文档链接

📚 组件详细文档请访问以下站点:

安装方法

  1. 在uni-app插件市场中搜索并导入lime-crypto
  2. 非源码APP需要自定义基座
  3. 请先在页面上引入插件后再自定义基座

使用方法

import { useCrypto } from '@/uni_modules/lime-crypto'
const crypto = useCrypto()

使用示例

MD5哈希

// 计算字符串的MD5哈希值
const md5Hash = crypto.MD5('Hello World').toString()
console.log('MD5:', md5Hash)
// 输出: MD5: b10a8db164e0754105b7a99be72e3fe5

SHA256哈希

// 计算字符串的SHA256哈希值
const sha256Hash = crypto.SHA256('Hello World').toString()
console.log('SHA256:', sha256Hash)
// 输出: SHA256: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

HMAC-SHA256签名

// 使用密钥对消息进行HMAC-SHA256签名
const key = 'secret-key'
const message = 'Message to sign'
const hmacSig = crypto.HmacSHA256(message, key).toString()
console.log('HMAC-SHA256:', hmacSig)

AES加密/解密

// AES加密(CBC模式)
const key = 'my-secret-key-123'
const iv = crypto.lib.WordArray.random(16) // 生成随机IV
const plaintext = 'Secret message to encrypt'

// 加密
const encrypted = crypto.AES.encrypt(plaintext, key, {
  iv: iv,
  mode: crypto.mode.CBC,
  padding: crypto.pad.Pkcs7
})
const ciphertext = encrypted.toString()
console.log('加密结果:', ciphertext)

// 解密
const decrypted = crypto.AES.decrypt(ciphertext, key, {
  iv: iv,
  mode: crypto.mode.CBC,
  padding: crypto.pad.Pkcs7
})
const decryptedText = decrypted.toString(crypto.enc.Utf8)
console.log('解密结果:', decryptedText)

DES加密/解密

// DES加密
const key = 'password'
const plaintext = 'Message to encrypt'

const encrypted = crypto.DES.encrypt(plaintext, key).toString()
console.log('DES加密:', encrypted)

const decrypted = crypto.DES.decrypt(encrypted, key).toString(crypto.enc.Utf8)
console.log('DES解密:', decrypted)

RSA加密/解密

// 生成密钥对
const rsaKeys =  crypto.RSA.generateKeyPair();

// 设置公钥
crypto.RSA.setPublicKey(rsaKeys.publicKey);

// 加密短数据
const shortData = 'Hello RSA';
const rsaEncrypted = crypto.RSA.encrypt(shortData);
console.log('加密结果:', rsaEncrypted);

// 设置私钥
crypto.RSA.setPrivateKey(rsaKeys.privateKey);

// 解密
const rsaDecrypted =  crypto.RSA.decrypt(rsaEncrypted);
console.log('解密结果:', rsaDecrypted); // 应该输出 "Hello RSA"

编码器使用

// 字符串转换为不同编码格式
const text = 'Hello World'
const wordArray = crypto.enc.Utf8.parse(text)

// 转换为Base64
const base64 = crypto.enc.Base64.stringify(wordArray)
console.log('Base64:', base64) // SGVsbG8gV29ybGQ=

// 转换为Hex(16进制)
const hex = crypto.enc.Hex.stringify(wordArray)
console.log('Hex:', hex) // 48656c6c6f20576f726c64

// 从Base64解析回字符串
const parsedText = crypto.enc.Base64.parse(base64)
const originalText = parsedText.toString(crypto.enc.Utf8)
console.log('原文:', originalText) // Hello World

功能特点

哈希算法

  • 支持MD5、SHA1、SHA256、SHA512等哈希算法
  • 支持HMAC-SHA256和HMAC-SHA1签名

AES加密/解密

  • 支持多种加密模式:CBC、CFB、CTR、CTRGladman、ECB、OFB
  • 支持多种填充方式:Pkcs7、AnsiX923、Iso10126、Iso97971、NoPadding、ZeroPadding

DES加密/解密

  • 与AES类似的API和使用方法

编码器

  • 支持多种编码格式:Hex(16进制)、Base64、Base64url、Latin1、UTF8等
  • 支持字符串与WordArray的相互转换

AES 加密模式

模式名称 描述 注意事项
CBC 密码块链模式,每个块依赖前一个块 - 必须提供16字节IV
- IV需唯一且随机
CFB 将块密码转为流密码,支持逐字节加密 - IV需随机且不可预测
- 错误传播影响后续数据
CTR 计数器模式,支持并行计算 - 计数器必须永不重复
- 需管理好nonce
CTRGladman 优化的CTR模式实现 - 非标准实现
- 可能与其他库不兼容
ECB 简单块加密,相同明文生成相同密文 - 不推荐正式使用
- 存在安全漏洞
OFB 输出反馈模式,错误不传播 - 需要完整IV
- 加密解密需严格同步

填充方式

填充名称 描述 注意事项
Pkcs7 填充字节值为填充长度(如缺3字节则填0x03) - 最通用方案
- 数据长度需为块大小整数倍
AnsiX923 末尾为填充长度,中间填0 - 部分旧系统不支持
Iso10126 末尾为填充长度,中间填随机值 - 已过时标准
- 慎用
Iso97971 使用比特填充方案 - 特殊位流场景专用
- 与其他库不兼容
NoPadding 无填充,APP端字符必须为16的整倍数 - 数据长度必须严格匹配块大小
ZeroPadding 用0x00填充至块大小 - 无法区分数据结尾和填充
- 可能跨平台不兼容

常见问题

  1. iOS普通授权下无法使用,需要源码版才行
  2. 鸿蒙Next普通授权下无法使用,需要源码版才行

支持与赞赏

如果你觉得本插件解决了你的问题,可以考虑支持作者: 支付宝赞助 微信赞助

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: