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加密时,如果加密结果不符合预期,可能的原因包括:
- 输入数据格式问题:确保输入数据的格式正确,例如字符串编码是否为UTF-8。
- 加密库使用不当:检查是否使用了正确的API和参数,确保调用的MD5加密函数是鸿蒙系统提供的标准实现。
- 数据预处理问题:在加密前,数据可能需要进行预处理,如去除空格、换行符等。
- 输出格式问题:MD5加密结果通常为32位十六进制字符串,检查输出格式是否符合预期。
- 系统版本差异:不同版本的鸿蒙系统可能在加密实现上存在差异,确保代码与当前系统版本兼容。
建议检查以上几点,确保加密过程正确无误。
在HarmonyOS鸿蒙Next中实现MD5加密时,如果结果不符合预期,可能是以下原因导致的:
- 编码问题:确保输入字符串的编码与MD5算法一致,通常使用UTF-8编码。
- 库使用错误:检查是否使用了正确的加密库,如
java.security.MessageDigest
。 - 数据格式:MD5输出通常是16字节的字节数组,需将其转换为十六进制字符串。
- 输入处理:确保输入数据在加密前未经过其他处理,如去除空格或特殊字符。
建议使用以下代码进行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);
}
}
}
检查以上步骤,确保加密过程正确。