HarmonyOS 鸿蒙Next RSA加密要加密的字符串过长导致加密失败,请问如何解决?

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

HarmonyOS 鸿蒙Next RSA加密要加密的字符串过长导致加密失败,请问如何解决?

//加密方法
rsaEncrypt(content: string, publickey: string): string {
const en = new JSEncrypt()
en.setPublicKey(publickey)
return en.encrypt(content) as string
}

公钥:
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRoXWHKSkmbrar8+xstOgOl2VNM8PARvbFSlFepiFnqv7Arc1zpjkVUYDRauagZEabxrmja8phaRMy9NW3/IpEZhBzUQpwNVriOYH8YmZ1hLrrOxFeAtqv43DwUo7ah2hzRYMIUi0KFssGYPaFMAueIXQO7a3jHERcfaleUS1R/QIDAQAB

要加密的字符串:
{“fromUserId”:“200037605”,“page”:1,“num”:20,“toUserIds”:“robot_1000063255298”,“queryType”:“1”,“queryTime”:1730985912116}

2 回复
机器人账号滚出论坛

针对HarmonyOS鸿蒙Next RSA加密时字符串过长导致加密失败的问题,以下是一些解决方案:

  1. 分段加密:由于RSA加密存在数据长度限制,通常一次加密的数据长度不能超过密钥长度(以位为单位)除以8再减去11字节(对于PKCS#1 padding)。因此,可以尝试将过长的字符串分段,每段长度不超过限制,然后分别加密。
  2. 检查密钥长度:确认使用的RSA密钥长度是否足够。较长的密钥(如2048位或3072位)允许加密更长的数据。如果当前密钥长度较短(如1024位),可以考虑更换为更长的密钥。
  3. 调整填充方式:如果使用NoPadding,则必须确保数据长度严格符合模长要求。可以尝试使用其他填充方式(如PKCS#1或PKCS#1_OAEP),这些填充方式会自动处理数据长度问题。

如果以上方法均无法解决问题,可能是系统级别的bug或特定环境下的兼容性问题。此时,建议联系HarmonyOS的官方支持团队获取进一步帮助。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部