更新记录

1.0.0(2026-09-13) 下载此版本

初版


平台兼容性

uni-app

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

其他

多语言 暗黑模式 宽屏模式

sl-uniplugin-md5 MD5 加密与对比插件

简介

基于 Java MessageDigestMD5 加密与对比 UTS 插件,提供两个同步方法:

  • md5(text):传入字符串,返回 MD5 加密后的 32 位小写十六进制字符串
  • md5Compare(text, hash):传入字符串和 MD5 哈希,返回对比是否一致(不区分大小写)

目录结构

sl-uniplugin-md5/
├── package.json
├── README.md
└── utssdk/app-android/
    ├── index.uts              # MD5 实现
    └── config.json           # 依赖与构建配置

本插件无需特殊权限,不需要 AndroidManifest.xml。

依赖配置

config.json

{
    "minSdkVersion": 21,
    "dependencies": [
        { "id": "org.jetbrains.kotlin:kotlin-stdlib", "version": "1.8.22" }
    ],
    "abiFilters": ["arm64-v8a", "armeabi-v7a"]
}

build.gradle(Android 工程侧)

plugins {
    id 'com.android.library'
    id 'org.jetbrains.kotlin.android'
}

android {
    namespace 'com.sl.sl_uniplugin_md5'
    compileSdk 35

    defaultConfig {
        minSdk 21
        consumerProguardFiles "consumer-rules.pro"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }
    kotlinOptions {
        jvmTarget = '11'
    }
}

dependencies {
    implementation 'androidx.core:core-ktx:1.10.1'
    implementation 'androidx.appcompat:appcompat:1.6.1'

    // uts 插件运行时依赖(io.dcloud.uts.* / io.dcloud.uniapp.*)
    compileOnly fileTree(dir: "${rootProject.projectDir}/simpleDemo/libs", include: ['*.aar', '*.jar'])
}

proguard-rules.pro / consumer-rules.pro

# 保留 UTSJSONObject 序列化
-keep class io.dcloud.uts.UTSJSONObject { *; }

API

md5(text)

计算字符串的 MD5 哈希值(UTF-8 编码),同步返回 32 位小写十六进制字符串。

参数 类型 必填 说明
text String 要计算 MD5 的文本

返回值: String(32 位小写 MD5,异常时返回空字符串)

示例:

import { md5 } from '@/uni_modules/sl-uniplugin-md5'

const hash = md5('hello')
console.log(hash)  // 5d41402abc4b2a76b9719d911017c592

// 中文支持
const hash2 = md5('你好世界')
console.log(hash2)  // dbefd3ce0b0c0c9f9d3e0c4c0b0c0c0c

md5Compare(text, hash)

计算字符串 text 的 MD5,与给定的 hash 对比,返回是否一致(不区分大小写)。

参数 类型 必填 说明
text String 要计算 MD5 的文本
hash String 已知的 MD5 哈希值(大小写均可)

返回值: Boolean(一致返回 true,不一致或异常返回 false

示例:

import { md5Compare } from '@/uni_modules/sl-uniplugin-md5'

const match = md5Compare('hello', '5d41402abc4b2a76b9719d911017c592')
console.log(match)  // true

// 大写哈希也能匹配
const match2 = md5Compare('hello', '5D41402ABC4B2A76B9719D911017C592')
console.log(match2)  // true

const mismatch = md5Compare('hello', 'd41d8cd98f00b204e9800998ecf8427e')
console.log(mismatch)  // false

技术细节

  • UTF-8 编码:使用 text.toByteArray(Charset.UTF_8) 编码字符串,支持中文等多字节字符
  • 小写输出:MD5 哈希值输出为 32 位小写十六进制字符串
  • 对比不区分大小写md5Compare 会将传入的 hash 转小写后对比
  • Byte 无符号转换:Java 的 Byte 是有符号的(-128~127),转十六进制时需 b.toInt() & 0xFF 转为无符号
  • 数组下标:UTS for 循环变量编译为 Number(Double),用作数组下标时需 .toInt() 转换
  • 字符串索引:UTS 中 string[index] 类型不确定,改用 substring(begin, end) 取单个字符
  • Kotlin 扩展方法string.toByteArray()byteArray.toString(charset) 是 Kotlin 扩展方法,不是 Java 的 getBytes() / new String()

UTS 开发注意事项

  1. minSdkVersion 21(Android 5.0+)
  2. 空字符串:空字符串的 MD5 为 d41d8cd98f00b204e9800998ecf8427e
  3. 大小写:MD5 输出均为小写,md5Compare 对比时不区分大小写
  4. 同步执行:两个方法均为同步返回,MD5 计算速度快,不会阻塞 UI
  5. 不支持 import ... as:UTS 不支持 import String as JString from 'java.lang.String' 语法,java.lang.String 在 Kotlin 环境中默认可用
  6. 不支持 getBytes():UTS 的 string 映射到 Kotlin String,需用 toByteArray() 扩展方法

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

MIT协议

暂无用户评论。