【鸿蒙实战开发】基于加解密算法框架的常见规格问题

往期知识点整理

  • 鸿蒙(HarmonyOS)北向开发知识点记录~
  • 【鸿蒙实战开发】ArkTS多线程的多线程系列(一):ArkTS多线能力入门
  • 【鸿蒙实战开发】ArkTS多线程的多线程系列(二):基于Sendable共享对象实现跨线程通信及UI状态刷新
  • 【鸿蒙实战开发】ArkTS多线性的多线程系列(三):基于单例实现跨线程缓存
  • 【鸿蒙实战开发】ArkTS多线程的多线程系列(四):基于生产者-消费者实现多线程协同
  • 【鸿蒙实战开发】ArkTS多线程的多线程系列(五):通过子线程实现全局弹窗
  • 【鸿蒙UI实战开发】基于List和Scroller由简单到复杂列表布局开发实践
  • 【鸿蒙UI实战开发】基于原生能力的键盘控制
  • 【鸿蒙UI实战开发】基于ArkUI现有能力实现自定义弹窗封装方案
  • 【鸿蒙实战开发】Native保存图片到应用沙箱
  • 【鸿蒙实战开发】基于加解密算法框架的常见规格问题
  • 持续更新中……

场景描述

对于加解密在HarmonyOS和安卓相互转换,以及HarmonyOS、安卓互调的各种场景下使用密文密钥的问题。

应用经常会遇到如下的业务诉求:

场景一:SM2加解密,安卓和HarmonyOS的sm2密文,密钥格式不符,不能直接使用,需要一定的转换。

场景二:AES加解密,缺少基础的加解密示例,在原有的文档示例基础上不知道如何修改。

方案描述

场景一:

对于使用sm2加解密,安卓生成的密钥拿到HarmonyOS使用如何导入,密文如何去转换、HarmonyOS生成的密文如何拿到安卓去解密。

方案

1、对于传入的密钥中公钥是带04的的十六进制的130位字符串,在传入的时候,密钥参数对应的格式为 04+x+y,x和y的长度是一致的,私钥的十六进制就直接放入对应的参数即可

传入不带04的十六进制的128位字符串,对应的格式就是x+y,代码中 keyStr.startsWith(“04”) ? keyStr.slice(2) : keyStr正是为了判断这个。

2、对于安卓加密的密文,HarmonyOS这边的格式是ASN.1包裹的格式,因此HarmonyOS这边解密的时候,需要先序列化:HexStrTouint8Array(new SM2_Ciphertext().i2d_SM2_Ciphertext(“安卓的密文”));同理HarmonyOS生成的密文要先解码:new SM2_Ciphertext().d2i_SM2_Ciphertext(uint8ArrayToHexStr(HarmonyOS密文)),其中安卓的密文为十六进制字符串,HarmonyOS密文为Uint8Array数组

具体实现如下:

效果图

你可能感兴趣的:(HarmonyOS,移动开发,鸿蒙开发,harmonyos,ui,list,组件化,移动开发,ArkUI,算法)