HarmonyOS 鸿蒙Next 加解密内容类型转换

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

HarmonyOS 鸿蒙Next 加解密内容类型转换 在鸿蒙的文档案例代码中,加密结果是Uint8Array类型,但因为我们需要将加密结果传给后端,因此需要做u8a->str的转换。后续也需要对后端返回的的结果解密,需要做str->u8a的转换。

我们目前测试用buffer或者util.TextEncoder/TextDecoder来做u8a->str->u8a的转换测试时,发现转换结果和原始对象数据不一致

import crypto from '@ohos.security.cryptoFramework';
import util from '@ohos.util';

let symKeyGenerator = crypto.createSymKeyGenerator('SM4_128');
let promiseSymKey = await symKeyGenerator.generateSymKey();
let key = promiseSymKey.getEncoded().data;

let symKeyBlob: crypto.DataBlob = { data: key };
let aesGenerator = crypto.createSymKeyGenerator('SM4_128');
let symKey = await aesGenerator.convertKey(symKeyBlob);
let mode = crypto.CryptoMode.ENCRYPT_MODE;
let cipher = crypto.createCipher('SM4_128|ECB|PKCS7');
await cipher.init(mode, symKey, null);

//开始加密
let text = "测试文本";
let updateOutput = await cipher.doFinal({ data: new util.TextEncoder("utf-8").encodeInto(text) });
let res = updateOutput.data;

//text2和text4不一致
let text2 = new Uint8Array(buffer.from(res).buffer);
let text3 = buffer.from(text2).toString('utf-8')
let text4 = new Uint8Array(buffer.from(text3).buffer);
let text5 = buffer.from(text4).toString('utf-8')

上述样例数据: key值 {0:18,1:215,2:228,3:100,4:41,5:50,6:171,7:177,8:178,9:109,10:42,11:3,12:219,13:227,14:135,15:10}

text2值 {0:205,1:63,2:179,3:243,4:161,5:83,6:54,7:118,8:114,9:74,10:209,11:185,12:224,13:220,14:204,15:36} text4值 {0:205,1:191,2:243,3:179,4:161,5:147,6:54,7:118,8:114,9:74,10:209,11:185,12:220,13:140,14:36}


更多关于HarmonyOS 鸿蒙Next 加解密内容类型转换的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

将你的代码替换一下,编解码错误使用,前后端支持转换对等的格式是十六进制和base64格式

let text = "测试文本";
let updateOutput = await cipher.doFinal({ data: new Uint8Array(buffer.from(text, 'utf-8').buffer) });
let res = updateOutput.data;

//转成base64或者十六进制后传给后端

let strHex = buffer.from(res).toString('hex')
let strBase = new util.Base64Helper().encodeToStringSync(res)

更多关于HarmonyOS 鸿蒙Next 加解密内容类型转换的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next 加解密内容类型转换”的问题,以下是在鸿蒙系统环境下处理加解密内容类型转换的相关信息:

在HarmonyOS鸿蒙Next系统中,加解密内容类型转换通常涉及将加密数据转换为解密数据,或者将一种加密格式转换为另一种加密格式。鸿蒙系统本身可能不提供直接的API用于通用的加解密内容类型转换,但开发者可以通过集成第三方加密库或利用系统提供的安全机制来实现这一功能。

为了实现加解密内容类型转换,开发者需要:

  1. 确定加密算法:首先明确要使用的加密算法,如AES、RSA等。

  2. 加密/解密操作:使用选定的加密算法对数据进行加密或解密。鸿蒙系统可能提供了某些加密算法的原生支持,或者开发者可以通过集成加密库来实现。

  3. 内容类型转换:在加密或解密后,可能需要对数据进行格式转换,如Base64编码/解码,或者将二进制数据转换为十六进制字符串等。

  4. 错误处理:在加解密和内容类型转换过程中,应妥善处理可能出现的错误,如密钥错误、数据损坏等。

如果开发者在鸿蒙系统上实现加解密内容类型转换时遇到困难,建议查阅鸿蒙系统的官方文档或相关开发者社区以获取更多信息。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部