HarmonyOS 鸿蒙Next中系统完整性检测时log出来的jws没有“.”

HarmonyOS 鸿蒙Next中系统完整性检测时log出来的jws没有“.”

//生成base64的nonce随机数 let nonce = generateNonce(); console.log(‘11111’,nonce); // // 请求系统完整性检测,并处理结果 let req : safetyDetect.SysIntegrityRequest = { nonce : nonce // 从服务器生成的随机的nonce值 }; try { hilog.info(0x0000, TAG, ‘开始检测系统完整性.’); const safedata: safetyDetect.SysIntegrityResponse = await safetyDetect.checkSysIntegrity(req); hilog.info(0x0000, TAG, ‘成功检测系统完整性: %{public}s’, JSON.stringify(safedata));

} catch (err) { let e: BusinessError = err as BusinessError; hilog.error(0x0000, TAG, ‘系统完整性异常: %{public}d %{public}s’, e.code, e.message); }

log出来的只是一长串的jws


更多关于HarmonyOS 鸿蒙Next中系统完整性检测时log出来的jws没有“.”的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

由于JWS字符串较长,编译器未能打印完全,可以先通过客户端代码进行分割,然后再分别打印或发送至服务端。

更多关于HarmonyOS 鸿蒙Next中系统完整性检测时log出来的jws没有“.”的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我用的hdc查看完整的log也是不包含“.”这个关键分割字符的,我用的fileio导出的字符串才是正确的,log就有问题,

一长串的jws没有.来做分割,我直接给后台用java工具解析都不行

鸿蒙Next系统完整性检测输出的JWS缺少分隔符".",可能是签名格式异常。JWS标准格式应为Header.Payload.Signature三段式,用点号分隔。检查系统签名生成流程,确认使用的签名算法(如ES256/RS256)是否正确实现。验证签名时需确保JWS结构完整,缺失分隔符会导致解析失败。可对比正常JWS的Base64URL编码结构,排查系统在拼接JWS时是否遗漏分隔符。

在HarmonyOS Next中,系统完整性检测返回的JWS(JSON Web Signature)格式确实可能不包含"."分隔符。这是正常的实现方式,因为JWS规范允许紧凑序列化(compact serialization)和JSON序列化两种格式。

您获取到的长字符串是JWS的紧凑序列化格式,它由三部分组成(header.payload.signature)组成,但系统可能出于性能或安全考虑去掉了分隔符。您可以通过以下方式验证:

  1. 检查字符串长度是否为固定值(如256字节)
  2. 尝试用Base64解码前部分验证是否包含有效头部信息
  3. 确认该字符串能正常通过系统验证接口

如果需要标准JWS格式,可以手动在适当位置插入"."分隔符,但建议直接使用系统提供的原始格式进行验证,避免引入解析错误。

回到顶部