HarmonyOS 鸿蒙Next 签名是一个unit8Array,我怎么获得base64

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 签名是一个unit8Array,我怎么获得base64 签名是一个unit8Array,我怎么获得base64

2 回复

得到unit8arry后需要使用base64进行编码,base64Helper.encodeToStringSync(signData.data),可以参考下面的demo:

async function signMessagePromise(priKey: cryptoFramework.PriKey) {
  let base64Helper = new util.Base64Helper();
  let signAlg = "RSA1024|PKCS1|MD5";
  let signer = cryptoFramework.createSign(signAlg);
  await signer.init(priKey);
  await signer.update(input1); // 如果明文较短,可以直接调用sign接口一次性传入
  let signData = await signer.sign(input2);
  let str = base64Helper.encodeToStringSync(signData.data)
  let unitdata = base64Helper.decodeSync(str)
  let signBlob: cryptoFramework.DataBlob = { data: unitdata }
  return signBlob;
}

更多关于HarmonyOS 鸿蒙Next 签名是一个unit8Array,我怎么获得base64的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,如果你有一个Uint8Array(即无符号8位整型数组),并且你需要将其转换为Base64编码,可以使用JavaScript提供的内置方法来完成。以下是如何在鸿蒙应用中进行这一转换的方法:

  1. 确保环境支持:鸿蒙应用开发中通常支持JavaScript,特别是如果你在使用ArkUI框架。

  2. 使用btoa函数:虽然btoa直接处理的是字符串,但你可以先将Uint8Array转换为字符串(通常使用字符编码如latin1ISO-8859-1,这些编码在这种情况下与无符号8位值一一对应)。不过,由于btoa只接受ASCII字符串,你需要先将Uint8Array转换为二进制字符串,再转为Base64。

  3. 代码实现:

    function uint8ArrayToBase64(uint8Array) {
        let binaryString = '';
        for (let i = 0; i < uint8Array.length; i++) {
            binaryString += String.fromCharCode(uint8Array[i]);
        }
        return window.btoa(binaryString);
    }
    
    // 示例使用
    let uint8Array = new Uint8Array([72, 101, 108, 108, 111]); // "Hello" 的 ASCII 码
    let base64String = uint8ArrayToBase64(uint8Array);
    console.log(base64String); // 输出 "SGVsbG8="
    

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部