HarmonyOS鸿蒙Next系统的加密库怎么使用MD5加密?
HarmonyOS鸿蒙Next系统的加密库怎么使用MD5加密? HarmonyOS系统的加密库怎么使用MD5加密?
可以参考以下文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-cryptoframework-V5#md
详情参考以下demo:
let base64 = new util.Base64Helper();
export function DoMdByPromise() {
// 摘要算法名称。
let mdAlgName = "MD5";
// 要进行摘要的数据。
let message = "Hello,中国";
let md = cryptoFramework.createMd(mdAlgName);
;
// 如果数据量较小,可以使用 update() 一次传入所有数据。输入参数的长度没有限制。
let promiseMdUpdate = md.update({ data: stringToUint8Array(message) });
promiseMdUpdate.then(() => {
let PromiseMdDigest = md.digest();
return PromiseMdDigest;
}).then(digestOutput => {
let mdOutput = digestOutput.data;
let str2 = uint8ArrayToHexStr(mdOutput);
let str = base64.encodeToStringSync(mdOutput);
let str1 = uint8ArrayToString(mdOutput);
let mdLen = md.getMdLength();
}).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 uint8ArrayToString(array:Uint8Array) { // 将UTF-8编码转换成Unicode编码 let out: string = “”; let index: number = 0; let len: number = array.length; while (index < len) { let character = array[index++]; switch(character >> 4) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: out += String.fromCharCode(character); break; case 12: case 13: out += String.fromCharCode(((character & 0x1F) << 6) | (array[index++] & 0x3F)); break; case 14: out += String.fromCharCode(((character & 0x0F) << 12) | ((array[index++] & 0x3F) << 6) | ((array[index++] & 0x3F) << 0)); break; default: break; } } return out; } function stringToUint8Array(str: string) { return new Uint8Array(buffer.from(str, ‘utf-8’).buffer) }
更多关于HarmonyOS鸿蒙Next系统的加密库怎么使用MD5加密?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,使用MD5加密可以通过其提供的cryptoFramework
模块实现。以下是一个简单的示例代码:
import cryptoFramework from '@ohos.security.cryptoFramework';
async function md5Encrypt(input: string): Promise<string> {
const md5 = cryptoFramework.createMd();
const inputBlob = new cryptoFramework.DataBlob();
inputBlob.data = new Uint8Array(new TextEncoder().encode(input));
await md5.init();
const outputBlob = await md5.update(inputBlob);
await md5.final();
return Array.from(outputBlob.data)
.map(byte => byte.toString(16).padStart(2, '0'))
.join('');
}
// 使用示例
md5Encrypt("example").then(hash => console.log(hash));
这段代码首先导入cryptoFramework
模块,然后定义了一个md5Encrypt
函数,该函数接受一个字符串输入并返回其MD5哈希值。函数内部通过createMd
方法创建一个MD5实例,将输入字符串转换为DataBlob
对象,然后调用init
、update
和final
方法完成加密过程,最后将结果转换为十六进制字符串返回。
在HarmonyOS鸿蒙Next系统中,使用MD5加密可以通过MessageDigest
类实现。首先导入java.security.MessageDigest
,然后创建MessageDigest
实例并指定算法为MD5
。将待加密的字符串转换为字节数组,调用digest
方法进行加密,最后将结果转换为16进制字符串。以下是示例代码:
import java.security.MessageDigest;
public class MD5Util {
public static String md5(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digest = md.digest(input.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
调用md5
方法即可对字符串进行MD5加密。