HarmonyOS RSA加密失败问题

其他系统代码:

KeyFactory keyFactory = KeyFactory.getInstance("RSA");
byte[] bytePublicKey = Base64.decode(publicKey, 0);
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(bytePublicKey);
Key publicK = keyFactory.generatePublic(x509EncodedKeySpec);
String transformation = "RSA/ECB/PKCS1Padding";
Cipher cipher = Cipher.getInstance(transformation);
cipher.init(1, publicK);

HarmonyOS 代码:

 static async encryptByPublicKey(data: string) {
  let base64Helper = new util.Base64Helper()
  let keyGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024')
  let pubKey = await RsaEncryptUtil.genPublicKeyPairByData()
  let keyPair = await keyGenerator.convertKey(pubKey.getEncoded(), null)
  let cipher = cryptoFramework.createCipher('RSA|PKCS1')
  await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, keyPair.pubKey, null)
  let inputBlob: cryptoFramework.DataBlob = {
    data: base64Helper.decodeSync(data)
  }
  let cipherText = await cipher.doFinal(inputBlob);
  return base64Helper.encodeToString(cipherText.data)
}

static async genPublicKeyPairByData(): Promise<cryptoFramework.PubKey> {
  RsaEncryptUtil.key = ContextUtils.getContext().resourceManager.getRawFileContentSync(RsaEncryptUtil.fileName)
  let cerData = new util.Base64Helper().decodeSync(RsaEncryptUtil.key)
  let encodingBlob: cert.EncodingBlob = {
    data: RsaEncryptUtil.key,
    data: cerData,
    // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER和FORMAT_PKCS7
    encodingFormat: cert.EncodingFormat.FORMAT_PEM
  };
  let x509Cert = await cert.createX509Cert(encodingBlob)
  return x509Cert.getPublicKey()
}

其中本地文件内容为公钥字符串长度216位无边界符,尝试了 cert.EncodingFormat所有枚举类型均失败

错误代码为:code=401 message="create X509Cert failed"

根据官方文档得知原因为格式错误 但是该格式在上述其他系统代码中可以正常运行

帮忙确认一下是其他系统转HarmonyOS 的代码错误还是官方目前不支持相关格式

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

该报错信息code=401 message=“create X509Cert failed”,错误原因是非法入参

错误原因文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-cert-V5#certresult

可能是由于encodingBlob的格式不对,data格式为Uint8Array参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-cert-V5#encodingblob

分享
微博
QQ
微信
回复
1天前
相关问题
RSA NoPadding模式加密失败
1268浏览 • 1回复 待解决
HarmonyOS RSA加密中,公私钥问题
19浏览 • 1回复 待解决
HarmonyOS RSA加密方式
669浏览 • 1回复 待解决
HarmonyOS rsa加密报错
40浏览 • 1回复 待解决
HarmonyOS RSA分段加密乱码
628浏览 • 1回复 待解决
HarmonyOS 实现RSA加密功能
621浏览 • 1回复 待解决
HarmonyOS RSA加密算法实现
36浏览 • 1回复 待解决
HarmonyOS 请问ArkTS如何实现RSA加密
522浏览 • 1回复 待解决
HarmonyOS RSA私钥加密公钥解密
34浏览 • 1回复 待解决
RSA加密方法在HarmonyOS 的实现
21浏览 • 1回复 待解决
RSA 加密的具体使用方法
240浏览 • 1回复 待解决
HarmonyOS RSA解密问题
485浏览 • 1回复 待解决
HarmonyOS RSA加密的base64秘钥转换
20浏览 • 1回复 待解决
RSA加密,使用自有私钥解密报错
268浏览 • 1回复 待解决
如何使用RSA公钥加密明文数据
496浏览 • 1回复 待解决
HarmonyOS 加密导入RSA1024秘钥对Demo
23浏览 • 1回复 待解决
RSA签名后,后端验签失败
212浏览 • 1回复 待解决