更新记录
1.0.4(2024-06-12)
- 修复
app-js
和web
平台密钥默认规则遗漏的bug。 - 修复其他已知问题。
1.0.3(2024-05-30)
- 修复安卓部分
hash
转换时丢失一位的bug。
1.0.2(2024-05-28)
- 修复一些已知问题。
平台兼容性
Vue2 | Vue3 |
---|---|
× | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 4.11,Android:支持,iOS:支持,HarmonyNext:不确定 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | √ | √ | √ |
kux-crypto
kux-crypto
插件是根据 CryptoJS 设计实现的一个标准和安全加密算法的插件。
提示
目前因
uts 插件
仅支持app-android/app-ios
的原生加密,所以如果是安卓之外的环境使用场景请选择源码授权
方式使用!!!
插件特色
- 多端同步迭代支持
- CryptoJS 一致的用法
- 支持多种主流加密算法
- 提供完善的demo演示
- 多端一致的API设计
安装配置
插件市场下载插件后,直接像下面示例导入初始化即可
import { useCrypto } from '@/uni_modules/kux-crypto';
const kuxCrypto = useCrypto();
使用方法
提示
- 目前仅支持输入输出UTF8编码的字符串参数。
- 下面示例代码的类型需要手动从
@/uni_modules/kux-crypto/utssdk/interface
导入使用。- 下面示例代码的
kuxCrypto
为上面安装配置步骤初始化后的变量。
Hashing
MD5
MD5 是一种广泛使用的哈希函数。它已被用于各种安全应用程序,也常用于检查文件的完整性。但是,MD5 不具有抗冲突性,并且不适用于依赖于此属性的 SSL 证书或数字签名等应用程序。
const hash = kuxCrypto.MD5("Message");
SHA-1
SHA-1 是现有 SHA 哈希函数中最成熟的,它用于各种安全应用程序和协议。不过,随着新攻击的发现或改进,SHA-1的抗碰撞能力一直在减弱。
const hash = kuxCrypto.SHA1("Message");
SHA-2
SHA-256 是 SHA-2 集中的四个变体之一。它不像 SHA-1 那样广泛使用,尽管它似乎提供了更好的安全性。
const hash = kuxCrypto.SHA256("Message");
SHA-512 与 SHA-256 基本相同,但对 64 位字节而不是 32 位字节进行操作。
const hash = kuxCrypto.SHA512("Message");
SHA-3
后面出现的新的哈希算法。
const hash = kuxCrypto.SHA3("Message");
SHA-3 可以配置为输出 224、256、384 或 512 位之一的哈希长度。默认值为 512 位。
let hash = kuxCrypto.SHA3("Message", { outputLength: 224 } as SHA3Cfg);
let hash = kuxCrypto.SHA3("Message", { outputLength: 256 } as SHA3Cfg);
let hash = kuxCrypto.SHA3("Message", { outputLength: 384 } as SHA3Cfg);
提示
因为原生安卓未提供该算法的实现,所以使用该算法时需要打包自定义基座。 IOS平台暂不支持。
RIPEMD-160
const hash = kuxCrypto.RIPEMD160("Message");
提示
因为原生安卓未提供该算法的实现,所以使用该算法时需要打包自定义基座。
Ciphers
密码算法
AES
支持 AES-128、AES-192 和 AES-256。它将根据您传入的密钥的大小来选择变体。如果使用密码,则它将生成一个 256 位密钥。
const encrypted = kuxCrypto.AES.encrypt("Message", "Secret Passphrase");
const decrypted = kuxCrypto.AES.decrypt(encrypted, "Secret Passphrase");
提示
- 秘钥不足加密算法要求时插件会自动在末尾通过补齐 x 字符来达到 16 位、32位或者64位。
- 秘钥长度超过64位时会自动截断来满足64位要求。
KuxCrypto 支持自定义选择加密模式(mode),支持如下:
- CBC (默认)
- CFB
- CTR
- OFB
- ECB
加密模式选择可以通过 kuxCrypto.mode
属性获取,具体示例代码如下:
const encrypted = kuxCrypto.AES.encrypt("Message", "Secret Passphrase", {
mode: kuxCrypto.mode.ECB
} as CipherOption);
kuxCrypto 支持自定义填充模式 (padding),支持如下:
- Pkcs7 (默认)
- Iso97971
- AnsiX923 (仅限web)
- Iso10126
- ZeroPadding
- NoPadding
可以通过 kuxCrypto.pad
属性获取,具体示例代码如下:
const encrypted = kuxCrypto.AES.encrypt("Message", "Secret Passphrase", {
padding: kuxCrypto.pad.ZeroPadding
} as CipherOption);
提示
由于原生对填充模式的支持和web有差异,所以以上填充模式在原生上面插件做了兼容处理。
kuxCrypto 支持自定义偏移量,开发者可以通过 kuxCrypto.utils.random(16)
来自动生成符合要求的偏移量字符串。
const encrypted = kuxCrypto.AES.encrypt("Message", "Secret Passphrase", {
iv: kuxCrypto.utils.random(16)
} as CipherOption);
提示
- 偏移量建议填写自己的实际偏移量,目前插件提供的自动生成的没做安全处理。
- 如果偏移量未填写会默认设置为秘钥内容做补充处理。
- 如果是跨端加密解密场景强烈建议使用自己完整的偏移量。
偏移量在原生环境支持通过 ivEncoding
设置输入格式,支持如下:
- hex:十六进制输入
- base64:base64编码输入
const encrypted = kuxCrypto.AES.encrypt("Message", "Secret Passphrase", {
ivEncoding: 'hex'
} as CipherOption);
提示
- 输入格式要和实际输入的偏移量内容格式保持一致。
工具类方法
onError (callback: OnErrorCallback): void
捕获插件异常信息,如加密解密方法使用中出现的错误异常。
结语
kux 不生产代码,只做代码的搬运工,致力于提供uts 的 js 生态轮子实现,欢迎各位大佬在插件市场搜索使用 kux 生态插件:https://ext.dcloud.net.cn/search?q=kux
友情推荐
- TMUI4.0:包含了核心的uts插件基类.和uvue组件库
- GVIM即时通讯模版:GVIM即时通讯模版,基于uni-app x开发的一款即时通讯模版
- t-uvue-ui:T-UVUE-UI是基于UNI-APP X开发的前端UI框架
- UxFrame 低代码高性能UI框架:【F2图表、双滑块slider、炫酷效果tabbar、拖拽排序、日历拖拽选择、签名...】UniAppX 高质量UI库
- wx-ui 基于uni-app x开发的高性能混合UI库:基于uni-app x开发的高性能混合UI库,集成 uts api 和 uts component,提供了一套完整、高效且易于使用的UI组件和API,让您以更少的时间成本,轻松完成高性能应用开发。
- firstui-uvue:FirstUI(unix)组件库,一款适配 uni-app x 的轻量、简洁、高效、全面的移动端组件库。
- easyXUI 不仅仅是UI 更是为UniApp X设计的电商模板库:easyX 不仅仅是UI库,更是一个轻量、可定制的UniAPP X电商业务模板库,可作为官方组件库的补充,始终坚持简单好用、易上手