HarmonyOS 已知RSA或者SM2私钥,如何生成ARKUI可用私钥对象?

如题:HarmonyOS 已知RSA或者SM2私钥,如何生成ARKUI可用私钥对象?

阅读 594
1 个回答

可以通过AsyKeyGenerator.convertKey方法将RSA或者SM2私钥转为KeyPair对象。参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-cryptoframework-V5\#convertkey-2

示例代码如下:

import crypto from '@ohos.security.cryptoFramework';
/**
 * 将非对称加密字符串priKey转换为symKey对象
 * @param privateKey字符串key
 * @param symAlgName 秘钥规格
 * @returns
 */
static async convertPriKeyFromStr(privateKey: string, symAlgName: string) {
  let symKeyBlob: crypto.DataBlob = { data: StrAndUintUtil.stringToByteArray(privateKey) };
  let aesGenerator = crypto.createAsyKeyGenerator(symAlgName);
  let symKey = await aesGenerator.convertKey(null, symKeyBlob);
  return symKey;
}

/**
 * 字符串转换为Uint8Array数组
 * @param str 字符串
 * @returns Uint8Array数组
 */
static stringToByteArray(str: string): Uint8Array {
  const hexString = str.match(/.{1,2}/g); // 将字符串按每两个字符分割为数组
  let arr = new Array<string>();
  hexString?.forEach((val) => {
    arr.push(val);
  })
  const byteArray: number[] = arr.map(byte => parseInt(byte, 16)); // 将每个十六进制字节转换为整数
  return new Uint8Array(byteArray);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进