目录

应用启动中进行加解密处理时,出现闪退

问题现象

应用在启动中使用加解密功能的情况下,发生闪退。

背景知识

问题定位

  1. 从faultlogger目录下获取到应用的JsCrash故障日志,故障原因是Error,故障信息为do final fail!,数据加解密失败。
    Reason:Error
    Error name:Error
    Error message:do final fail!
    Error code:
    Stacktrace:
    Cannot get SourceMap info, dump raw stack:
        at decryptSync (entry|@pura/harmony-utils|1.3.4|src/main/ets/crypto/CryptoUtil.ts:26:1)
        at decryptSync (entry|@pura/harmony-utils|1.3.4|src/main/ets/crypto/SM4.ts:66:1)
        at decryptECBSync (entry|@pura/harmony-utils|1.3.4|src/main/ets/crypto/SM4.ts:54:1)
        at sm4Decode (entry|entry|1.0.0|src/main/ets/utils/j1.ts:93:1)
        at aboutToAppear (entry|entry|1.0.0|src/main/ets/pages/GWLogin.ts:316:1)
        at anonymous (entry|entry|1.0.0|src/main/ets/d/n1.ts:698:1)
  2. 排查hilog日志,搜索关键字HCF,从JsCipherDoFinalSync[726]: failed to do final!日志中可以看出,应用在调用doFinalSync接口失败。
    07-30 14:34:30.066 14335 14335 E C02F0A/com.hx.example/HCF: CommonDoFinal[592]: EVP_CipherFinal_ex failed!
    07-30 14:34:30.066 14335 14335 E C02F0A/com.hx.example/HCF: JsCipherDoFinalSync[726]: failed to do final!
  3. 由于分组加密算法对分组长度存在限制,必须使用填充方法对每个分组补足到规定长度,如果不符合要求就会导致doFinalSync接口失败,需要排查加密算法的填充模式以及明文的长度是否正常,以及加解密密钥是否一致。

分析结论

修改建议