HarmonyOS鸿蒙Next中实现md5加密,但是加密的结果不符合预期

HarmonyOS鸿蒙Next中实现md5加密,但是加密的结果不符合预期

static 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;
}

static md5(plainText: string, callback) {
  if (!callback) {
    return
  }

  if (typeof plainText != 'string' || plainText.length < 0) {
    callback(null);
  }

  let mdAlgName = "MD5"; // Digest algorithm name.
  let md = cryptoFramework.createMd(mdAlgName);

  md.update({ data: this.stringToUint8Array(plainText) }, (err,) => {
    if (err) {
      callback(null);
      return;
    }

    md.digest((digestErr, digestOutput) => {
      if (digestErr) {
        callback(null);
      } else {
        console.log("ddddddd phoneNumMd5:" + JSON.stringify(digestOutput));
        callback(digestOutput.data);
      }
    });
  });

}

更多关于HarmonyOS鸿蒙Next中实现md5加密,但是加密的结果不符合预期的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

md5生成的摘要结果是Uint8Array类型,若想得到十六进制字符串数据,需要自己转换,转换参考代码:

static 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;
}

更多关于HarmonyOS鸿蒙Next中实现md5加密,但是加密的结果不符合预期的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中实现MD5加密时,如果加密结果不符合预期,可能的原因包括:

  1. 输入数据格式问题:确保输入数据的格式正确,例如字符串编码是否为UTF-8。
  2. 加密库使用不当:检查是否使用了正确的API和参数,确保调用的MD5加密函数是鸿蒙系统提供的标准实现。
  3. 数据预处理问题:在加密前,数据可能需要进行预处理,如去除空格、换行符等。
  4. 输出格式问题:MD5加密结果通常为32位十六进制字符串,检查输出格式是否符合预期。
  5. 系统版本差异:不同版本的鸿蒙系统可能在加密实现上存在差异,确保代码与当前系统版本兼容。

建议检查以上几点,确保加密过程正确无误。

在HarmonyOS鸿蒙Next中实现MD5加密时,如果结果不符合预期,可能是以下原因导致的:

  1. 编码问题:确保输入字符串的编码与MD5算法一致,通常使用UTF-8编码。
  2. 库使用错误:检查是否使用了正确的加密库,如java.security.MessageDigest
  3. 数据格式:MD5输出通常是16字节的字节数组,需将其转换为十六进制字符串。
  4. 输入处理:确保输入数据在加密前未经过其他处理,如去除空格或特殊字符。

建议使用以下代码进行MD5加密:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {
    public static String md5(String input) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] messageDigest = md.digest(input.getBytes());
            StringBuilder hexString = new StringBuilder();
            for (byte b : messageDigest) {
                hexString.append(String.format("%02x", b));
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
}

检查以上步骤,确保加密过程正确。

回到顶部