更新记录
1.0.8(2025-12-21)
添加了 URL, URLSearchParams对象
1.0.7(2025-12-20)
-
增加了五星评分组件
-
增加了AspectRatioBox 宽高比容器组件 3.增加了二维码的外边距控制和图标及尺寸配置
-
(补上一次changLog错误)AES SM4 Blowfish加密解密 增加了多种加解密的Padding和Mode
1.0.6(2025-12-17)
新增:Base64 Pro Max Ultra 版(性能慢20到30倍,但有丰富的功能,包括自定义字母表)
- Mode
CBCMode.uts CBC_CS1Mode.uts CBC_CS2Mode.uts CBC_CS3Mode.uts CFBMode.uts CTRMode.uts ECBMode.uts GCMMode.uts OFBMode.utsCBCMode.uts CBC_CS1Mode.uts CBC_CS2Mode.uts CBC_CS3Mode.uts CFBMode.uts CTRMode.uts ECBMode.uts GCMMode.uts OFBMode.uts
- Padding
ANSIX923Padding.uts ISO10126Padding.uts ISO78164Padding.uts NoPadding.uts PKCS1Padding.uts PKCS7Padding.uts TBCPadding.uts ZeroPadding.uts
查看更多平台兼容性
uni-app(4.87)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | 5.0 | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
uni-app x(4.87)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | 5.0 | √ | √ | √ |
捐赠
上市公司【ST华铁,R通达1】董事长占款13亿。股票退市,索赔诉讼中,定损一百多万,还有负债,支持一下,要不扫个免费的支付宝红包也可以
如果你觉得本项目解决了你的问题,可以考虑支持作者:
| 微信赞赏码 | 支付宝领红包 | 支付宝 |
|---|---|---|
![]() |
![]() |
![]() |
std-utils
这是一个工具库,实现了一些工具函数,另外对标准功能进行封装,更符合使用直觉
纯UTS实现,后续将逐渐增加并维护更多功能。
只要是UTS能支持的我尽量适配,但手里只有安卓设备,请酌情考虑。目前资金紧张,后续如果有好转我可能考虑纯免费开源。
已完成功能列表如下(API基本稳定):
UTS工具
- UUID v1-v7 生成解析与验证
- md5 (含 HMAC) (含 流式计算)
- sha1 (含 HMAC) (含 流式计算)
- sha256 (含 HMAC) (含 流式计算)
- sha512 (含 HMAC) (含 流式计算)
- sha3 (含 HMAC) (含 流式计算)
- sm3 (含 HMAC) (含 流式计算)
- EventEmiter 工具类
- Key Value存储 Promisify封装 包含key前缀处理
- Base64 Pro Max Ultra 版(性能慢20到30倍,但有丰富的功能,包括自定义字母表)
- AES SM4 Blowfish 对称加密算法,以及Padding 和 Mode
- 浏览器的 URL, URLSearchParams对象。使用方法类似 const url = new URL('https://example.com:8080/path/to/page?param1=value1¶m2=value2#section1')
UI 组件
- 背景图片
- 背景视频
- 安全区组件
- 二维码组件 (后期会添加:1.二维码导出为二进制数据)
- 比例适配组件 AspectRatioBox
- 五星评分组件 Rating
<script setup>
// Hash
export { md5, hmacMd5, Md5, HmacMd5 } from './src/hash/md5.uts'
export { sha1, hmacSha1, Sha1, HmacSha1 } from './src/hash/sha1.uts'
export { sm3, hmacSm3, Sm3, HmacSm3 } from './src/hash/sm3.uts'
export { sha256, sha224, hmacSha256, hmacSha224, Sha256, HmacSha256 } from './src/hash/sha256.uts'
export { sha512, sha384, sha512_256, sha512_224, hmacSha512, hmacSha384, hmacSha512_256, hmacSha512_224, Sha512, HmacSha512 } from './src/hash/sha512.uts'
export { sha3_256, sha3_224, sha3_384, sha3_512, hmacSha3_224, hmacSha3_256, hmacSha3_384, hmacSha3_512, Sha3, HmacSha3 } from './src/hash/sha3.uts'
// UUID
export { uuidParse } from './src/uuid/parse.uts'
export { uuidRegex } from './src/uuid/regex.uts'
export { uuidStringify, uuidUnsafeStringify } from './src/uuid/stringify.uts'
export * from './src/uuid/types.uts';
export { uuidV1 } from './src/uuid/v1.uts';
export { uuidV1ToV6 } from './src/uuid/v1ToV6.uts'
export { uuidV3 } from './src/uuid/v3.uts'
export { uuidV4 } from './src/uuid/v4.uts'
export { uuidV5 } from './src/uuid/v5.uts'
export { uuidV6 } from './src/uuid/v6.uts'
export { uuidV6ToV1 } from './src/uuid/v6ToV1.uts'
export { uuidV7 } from './src/uuid/v7.uts'
export { uuidV35,uuidDNS,uuidURL } from './src/uuid/v35.uts'
export { uuidValidate } from './src/uuid/validate.uts'
export { uuidVersion } from './src/uuid/version.uts'
// Utils
export { EventEmitter } from './src/utils/EventEmitter.uts'
export { deserialize, safeDeserialize } from './src/utils/parseData.uts'
export { uint8ArrayToHex } from './src/utils/uint8ArrayToHex.uts'
export { getRandomValues } from './src/utils/random.uts'
// Net
import WebSocket from './src/net/WebSocket.uts'
export { WebSocket };
export { request } from './src/net/HTTPRequest.uts'
export { EventSource, SSEEventLine, SSEMessage } from './src/net/SSERequest.uts'
// FS
export * from './src/promisify/fs.uts'
// KV
export * from './src/promisify/storage.uts'
// URL
export { URL, URLSearchParams, UrlParts, URLSearchParamsInit } from './src/URL.uts'
// QRCode
export { QRCode } from './src/qrcode/QRCode.uts'
// Base64
export {
Base64Alphabet,
STANDARD_ALPHABET,
URL_SAFE_ALPHABET
Base64Engine,
Base64EngineConfig,
PAD,
NO_PAD,
btoa,
atob,
BASE64_STANDARD_ENGINE,
BASE64_STANDARD_NO_PAD_ENGINE,
BASE64_URL_SAFE_ENGINE,
BASE64_URL_SAFE_NO_PAD_ENGINE
} from './src/base64';
/**
* Crypto Library
* 模块化加密库,包含算法、填充和模式三个部分
*/
// 导出接口
export { BlockCipher } from './BlockCipher';
// 导出算法
export { Blowfish } from './symmetric/Blowfish';
export { AES } from './symmetric/AES';
export { SM4 } from './symmetric/SM4';
// 导出填充模式
export { PKCS7Padding } from './padding/PKCS7Padding';
export { PKCS1Padding } from './padding/PKCS1Padding';
export { ZeroPadding } from './padding/ZeroPadding';
export { ISO10126Padding } from './padding/ISO10126Padding';
export { ANSIX923Padding } from './padding/ANSIX923Padding';
export { ISO78164Padding } from './padding/ISO78164Padding';
export { NoPadding } from './padding/NoPadding';
export { TBCPadding } from './padding/TBCPadding';
// 导出加密模式
export { ECBMode } from './modes/ECBMode';
export { CBCMode } from './modes/CBCMode';
export { CBC_CS1Mode } from './modes/CBC_CS1Mode'; // CBC-CTS模式变体1
export { CBC_CS2Mode } from './modes/CBC_CS2Mode'; // CBC-CTS模式变体2
export { CBC_CS3Mode } from './modes/CBC_CS3Mode'; // CBC-CTS模式变体3
export { CFBMode } from './modes/CFBMode';
export { OFBMode } from './modes/OFBMode';
export { CTRMode } from './modes/CTRMode';
export { GCMMode } from './modes/GCMMode';
</script>
<script setup>
import { EventEmitter } from "@/uni_modules/std-utils"
// 创建自定义 EventEmitter 类
class MyEventEmitter extends EventEmitter {
constructor() {
super()
}
}
// 创建实例
const emitter = new MyEventEmitter()
emitter.on('message', (data : string) => {
lastMessage.value = data
addLog(`收到消息: ${data}`)
})
emitter.once('once', (data : string) => {
addLog(`一次性监听触发: ${data}`)
})
emitter.emit('message', '消息')
emitter.emit('once', '一次性消息')
emitter.remove('message')
</script>
<script setup>
import { uuidParse } from '@/uni_modules/std-utils'
import { uuidStringify } from '@/uni_modules/std-utils'
import { uuidVersion } from '@/uni_modules/std-utils'
import { uuidValidate } from '@/uni_modules/std-utils'
import { uuidV1 } from '@/uni_modules/std-utils'
import { uuidV3 } from '@/uni_modules/std-utils'
import { uuidV4 } from '@/uni_modules/std-utils'
import { uuidV5 } from '@/uni_modules/std-utils'
import { uuidV6 } from '@/uni_modules/std-utils'
import { uuidV6ToV1, uuidV1ToV6 } from '@/uni_modules/std-utils'
import { uuidV7 } from '@/uni_modules/std-utils'
const v1UUID = ref('')
const v4UUID = ref('')
const v4UUID2 = ref('')
const v4UUID3 = ref('')
const v4UUID4 = ref('')
const v1ToV6UUID = ref('')
const uuidV4Demo = '2ba370f9-5cba-4f1f-8b46-7c412c48e45e'
const emptyBuf = new Uint8Array(16)
function parse() {
const uuidBuffer = uuidParse(uuidV4Demo)
return `[${uuidBuffer.toString()}]`
}
function stringify() {
const uuidBuffer = uuidParse(uuidV4Demo)
const str = uuidStringify(uuidBuffer)
return str
}
function getVersion() {
return uuidVersion(uuidV4Demo)
}
function uuidValidate(str : string) {
try {
uuidValidate(str)
return true
} catch {
return false
}
}
function uuidv1() {
return uuidV1()
}
function uuidv4() {
v4UUID.value = uuidV4().toString()
// 传入一个buf
const buf1 = new Uint8Array(16)
v4UUID2.value = uuidV4({ random: buf1 }).toString()
console.log("V4_传入的buf1变了", buf1.toString());
// 传入一个buf
const buf2 = new Uint8Array(16)
v4UUID3.value = uuidV4({}, buf2).toString()
console.log("V4_传入的buf2变了", buf2.toString());
const buf3 = new Uint8Array(32)
v4UUID3.value = uuidV4({}, buf3, 16).toString()
console.log("V4_从buf的16字节开始往后写", buf3.toString());
console.log("--------------------------");
}
uuidv4()
setInterval(() => {
v1UUID.value = uuidV1() as string
v1ToV6UUID.value = uuidV1ToV6(v1UUID.value).toString()
}, 1000)
function uuidv3() {
return uuidV3(emptyBuf, uuidV4Demo)
}
function uuidv5() {
return uuidV5(emptyBuf, uuidV4Demo)
}
function uuidv6() {
return uuidV6()
}
function uuidv7() {
return uuidV7()
}
</script>
<script>
// 自定义字母表base64
const customAlphabetText = ref('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-')
// 创建自定义字母表,这里使用一个变化的字母表作为示例
const customAlphabet = new Base64Alphabet(
customAlphabetText.value
)
const customEngine = new Base64Engine(customAlphabet, PAD)
customAlphabetEncoded.value = customEngine.encode(originalText.value)
</script>
<background-video src='/static/bg.mp4'>
背景视频
</background-video>
<background-image src='/static/logo.png'>
背景图片
</background-image>
<!-- 二维码 -->
<QRCode :text="qrText" :size="size" :level="level" :type-number="typeNumber" :background-color="backgroundColor"
:foreground-color="foregroundColor" />
<rating
:value="4.2"
:count="5"
:size="40"
:gap="5"
star-color="#ffd700"
star-background-color="#f0f0f0"
border-color="#d0d0d0"
:corner-radius="0.2"
:inner-corner-radius="0.1"
@star-click="handleStarClick"
/>
<AspectRatioBox :ratio="16/9" :sourceWidth="300">
<view class="content">
<Rating :value="3" />
<view> -----根据原设计稿宽度缩放------</view>
<view> -----原设计300缩放到当前------</view>
</view>
</AspectRatioBox>
目录下有一些其他工具函数,如果你已经购买,可以参考到你的项目中,但不保证API的稳定
- WebSocket (与nodejs的ws API接近)
- Post SSE 未实现重连和lastID功能 (由于官方API实现会把请求的数据长期存储,直至链接中断一次性返回,不知道是存在内存还是磁盘缓存,如果长时间链接,可能存在问题)
- HTTP请求Promisify封装
- 文件 Promisify封装(未测试)
- 路由跳转 Promisify封装(未测试)
未来将添加
- 防抖节流

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)



下载 23285
赞赏 3
下载 13138516
赞赏 1843
赞赏
京公网安备:11010802035340号