HarmonyOS 鸿蒙Next加解密算法库的使用问题

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

HarmonyOS 鸿蒙Next加解密算法库的使用问题

【关键字】

convertKey函数 / SM2 / textDecoder.decodeWithStream() 方法 / SM4密钥

【问题描述】

问题一:

使用 convertKey() 方法对指定的数据进行 SM2 非对称密钥生成,需要满足“ASN.1语法、X.509规范、DER编码格式”,有没有官方库可以提供转换方法,将字符串转换成上述编码格式?

问题二:

使用真机时,利用 textDecoder.decodeWithStream() 方法转换SM4密钥为字符串时,打印出的密钥字符串为乱码,是否正常?

问题三:

没有用真机,使用 Previewer 模拟调试时,打印出的 result 变量为空字符串。用SM2算法加密数据时,使用 cryptoFramework.createCipher 方法创建实例,catch 报错:TypeError:Constructor is false。 是否跟未使用真机调试有关?

cke_2711.png

cke_1817.png

【解决方案】

问题一:

当前暂无可将字符串转换为符合convertKey函数入参规范的库方法,业务可以根据自己不同的需求自行转换。

import buffer from '@ohos.buffer';
str->Uint8Array: new Uint8Array(buffer.from(str).buffer)
Uint8Array->str: buffer.from(uint8.buffer).toString()

问题二:

是正常的,使用SymKeyGenerator.generateSymKey()生成密钥时底层原理是使用OpenSSL的RAND_priv_bytes()作为底层能力生成随机密钥,会随机生成字节数组,textDecoder.decodeWithStream方法是将字节数组转换成UTF-8编码的字符串,所以打印出的字符串为乱码。

问题三:

textDecoder.decodeWithStream输出为空,根因是Previewer不支持SymKeyGenerator.generateSymKey()函数,返回的密钥数组为空。

catch 报错:TypeError:Constructor is false,因为Previewer模拟调试不支持相关API。

具体预览器支持的API清单请参考: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-previewer-api-list-0000001741342488-V5


更多关于HarmonyOS 鸿蒙Next加解密算法库的使用问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next加解密算法库的使用问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对“HarmonyOS 鸿蒙Next加解密算法库的使用问题”,以下提供直接相关的回答:

HarmonyOS 鸿蒙Next的加解密算法库为开发者提供了丰富的加密和解密功能。若在使用时遇到问题,首先需确认已正确引入算法库,并查阅相关文档了解各算法的具体使用方法和参数要求。

在使用过程中,常见的错误可能包括参数不匹配、算法初始化失败、密钥管理不当等。对于这些问题,应检查传入的参数是否符合算法要求,确保算法实例正确初始化,并遵循密钥管理的最佳实践。

此外,还需注意算法库的版本兼容性。若使用的HarmonyOS版本与算法库版本不兼容,可能会导致功能异常。因此,在升级HarmonyOS或算法库时,需仔细阅读升级说明,确保版本匹配。

若问题依旧存在,可尝试查看HarmonyOS的开发者社区或论坛,看是否有其他开发者遇到并解决了类似问题。同时,确保开发环境配置正确,包括编译器、链接器等工具的版本和设置。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。在这里,你可以获得更专业的技术支持和解决方案。

回到顶部