HarmonyOS 鸿蒙Next中字符串MD5加密

HarmonyOS 鸿蒙Next中字符串MD5加密 如题,字符串如何进行MD5加密

3 回复

计算字符串的MD5可以使用cryptoFramework进行MD5加密

  1. 调用cryptoFramework.createMd,指定摘要算法MD5,生成摘要实例(Md)。
  2. 调用Md.update,传入自定义消息,进行摘要更新计算。单次update长度没有限制。
  3. 调用Md.digest,获取摘要计算结果。
  4. 调用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加密。以下是核心实现步骤:

  1. 创建MD5实例
import cryptoFramework from '@ohos.security.cryptoFramework';

let md5 = cryptoFramework.createMd();
  1. 字符串转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;
}
  1. 执行加密并获取结果
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等更强算法
  • 返回结果为小写十六进制字符串
回到顶部