HarmonyOS鸿蒙Next系统的加密库怎么使用MD5加密?

HarmonyOS鸿蒙Next系统的加密库怎么使用MD5加密? HarmonyOS系统的加密库怎么使用MD5加密?

3 回复

可以参考以下文档: 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对象,然后调用initupdatefinal方法完成加密过程,最后将结果转换为十六进制字符串返回。

在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加密。

回到顶部