HarmonyOS 怎么实现特定的MD5加密方式?

当前app中用接口安全校验用了md5加密方式,但是加密结果和直接调用crypto-js中MD5的加密结果不一致,不知道当前app中MD5的加密效果用在HarmonyOS 中怎么实现,现在附上其他系统版本MD5方法实现,帮忙提供下在HarmonyOS 中应该如何实现相同的加密效果,当前HarmonyOS Md5的加密方法也提供在图片中,比如对字符串 “299ca90913f94fa598782952db1479682024-07-19 151721375617791937300crm.BITauto\>COM” 的加密结果,当前其他系统中得到的加密结果是 “10cdd15d6255ae1b2e5362e148ba194c”

阅读 512
1 个回答

可参考以下代码:

function doMdByPromise() {
  // 摘要算法名称。
  let mdAlgName = 'MD5';
  // 要进行摘要的数据。
  let message = 'Hello';
  let md = cryptoFramework.createMd(mdAlgName);
  console.info("[Promise]: Md algName is: " + md.algName);
  let promiseMdUpdate = md.update({ data: stringToUint8Array(message) });
  promiseMdUpdate.then(() => {
    // 调用 digest() 以返回结果。
    let PromiseMdDigest = md.digest();
    return PromiseMdDigest;
  }).then(digestOutput => {
    let mdOutput = digestOutput.data;
    let str2 = uint8ArrayToHexStr(mdOutput);
    console.info("[Promise]: MD result: " + mdOutput);
    let mdLen = md.getMdLength();
    console.info("[Promise]: MD len: " + mdLen);
  }).catch((error: BusinessError) => {
    console.error("[Promise]: error: " + error.message);
  });
}
//摘要结果是Uint8Array类型,转换得到十六进制字符串数据
function uint8ArrayToHexStr(data: Uint8Array): string {
  let hexString = '';
  let i: number;
  for (i = 0; i < data.length; i++) {
    let char = ('00' + data[i].toString(16)).slice(-2);
    hexString += char;
  }
  return hexString;
}
function  stringToUint8Array(str: string) {
  let arr = new Uint8Array(str.length);
  for (let i = 0, j = str.length; i < j; ++i) {
    arr[i] = str.charCodeAt(i);
  }
  return arr;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏