HarmonyOS 鸿蒙Next RSA1024|NoPadding分段加密报错

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next RSA1024|NoPadding分段加密报错

在别处看着了一段RSA1024|NoPadding代码,结果运行报错,求大佬帮忙解答一下

错误日志:

cke_45806.png

Harmonyos Next教程
7 回复

文档中有关RSA说明:

  • NoPadding:不带填充,输入的数据必须与RSA钥模一样长,输出数据长度与RSA钥模一样长;
  •  RSA钥模 = (RSA的bits + 7) / 8

因此如果不用Padding(PKCS1或PKCS1_OAEP)用户得自己保证数据长度符合上述要求,现实中不实用;所以,不是选个填充方式进行加密吧。

已经搞定了,用的NoPadding,分段加密时的填充长度为RSA的bits / 8 没有+7

上面的公式是官方文档给的,考虑到整数除法,+7与否是不影响结果的,毕竟RSA位长都是8的位数:)

好吧。这玩意折腾了老长时间,还好最后解决了

开发者您好,问题已提单处理
private static stringToUint8Array(str: string) {
  let arr: number[] = [];
  for (let i = 0, j = str.length; i < j; ++i) {
    arr.push(str.charCodeAt(i));
  }

let tmpArray = new Uint8Array(arr); return tmpArray; }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

针对HarmonyOS(鸿蒙)中使用RSA1024|NoPadding分段加密报错的问题,首先确认你的加密数据长度是否超过了RSA1024允许的最大明文长度(通常为117字节,具体取决于填充方式,但NoPadding时应接近此值)。由于NoPadding不使用填充,直接加密的数据长度必须严格符合模长的要求,否则会报错。

检查数据分段逻辑,确保每段数据长度合适,并在加密前进行必要的填充或截断处理。同时,确认使用的库或框架是否支持RSA1024和NoPadding组合。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部