HarmonyOS 鸿蒙Next中字符串MD5加密
HarmonyOS 鸿蒙Next中字符串MD5加密 如题,字符串如何进行MD5加密
3 回复
计算字符串的MD5可以使用cryptoFramework进行MD5加密
- 调用cryptoFramework.createMd,指定摘要算法MD5,生成摘要实例(Md)。
- 调用Md.update,传入自定义消息,进行摘要更新计算。单次update长度没有限制。
- 调用Md.digest,获取摘要计算结果。
- 调用Md.getMdLength,获取摘要计算长度,单位为字节。
具体示例代码可以参考:
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
import { buffer } from '@kit.ArkTS';
function doMdBySync() {
let mdAlgName = 'MD5'; // 摘要算法名。
let message = 'mdTestMessage'; // 待摘要的数据。
let md = cryptoFramework.createMd(mdAlgName);
// 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制。
md.updateSync({ data: new Uint8Array(buffer.from(message, 'utf-8').buffer) });
let mdResult = md.digestSync();
console.info('[Sync]:Md result:' + mdResult.data);
let mdLen = md.getMdLength();
console.info("md len: " + mdLen);
}
【背景知识】
- cryptoFramework.createMd:生成Md实例,用于进行消息摘要的计算与操作。
- 调用cryptoFramework.createMd接口后的结果类型是DataBlob。
更多关于HarmonyOS 鸿蒙Next中字符串MD5加密的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,字符串MD5加密可通过@ohos.security.cryptoFramework模块实现。首先导入cryptoFramework,使用createMd()创建MD5实例。调用update()方法输入字符串数据,需转换为Unit8Array格式。最后执行digest()生成MD5哈希值,结果以Unit8Array形式返回,可转换为十六进制字符串显示。整个过程基于鸿蒙加密框架完成,无需依赖外部库。
在HarmonyOS Next中,可通过@ohos.security.cryptoFramework模块实现字符串MD5加密。以下是核心实现步骤:
- 创建MD5实例:
import cryptoFramework from '@ohos.security.cryptoFramework';
let md5 = cryptoFramework.createMd();
- 字符串转ArrayBuffer:
function stringToArrayBuffer(str: string): ArrayBuffer {
let arr = new Uint8Array(str.length);
for (let i = 0; i < str.length; i++) {
arr[i] = str.charCodeAt(i);
}
return arr.buffer;
}
- 执行加密并获取结果:
async function md5Encrypt(text: string): Promise<string> {
await md5.update({ data: stringToArrayBuffer(text) });
let md5Data = await md5.digest();
return Array.from(new Uint8Array(md5Data.data))
.map(b => b.toString(16).padStart(2, '0'))
.join('');
}
使用示例:
md5Encrypt("Hello HarmonyOS").then(hash => {
console.log("MD5结果:", hash); // 输出32位十六进制字符串
});
注意事项:
- 需在module.json5中声明
ohos.permission.USE_CRYPTOGRAPHIC权限 - MD5是弱哈希算法,重要场景建议使用SHA-256等更强算法
- 返回结果为小写十六进制字符串

