HarmonyOS鸿蒙Next中我刚写arkts遇到加密失败问题求助

HarmonyOS鸿蒙Next中我刚写arkts遇到加密失败问题求助 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/crypto-aes-sym-encrypt-decrypt-ecb 我复制官方的代码下来加密却失败了,请问是哪里的问题?我有注意到黄色字体,难道我得用真机调试?用预览器来执行加密代码会有问题?

cke_1089.png


更多关于HarmonyOS鸿蒙Next中我刚写arkts遇到加密失败问题求助的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

预览器环境下不支持[@ohos.security.cryptoFramework (加解密算法库框架)](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-cryptoframework)该API的使用;

预览器的使用场景一般为UI界面预览,查看UI界面效果,方便开发者随时调整界面UI布局。

详细信息请参考:【官方指南_支持使用预览器的API清单】

更多关于HarmonyOS鸿蒙Next中我刚写arkts遇到加密失败问题求助的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


好的,谢谢

别折腾模拟器了,用真机。

这个不是你代码写错了,而是 HarmonyOS 的「预览器(Previewer)」本身不支持真实加密能力导致的。

你日志里的黄色警告已经说明了核心问题:

The createCipher interface in the previewer is a mocked implementation

意思是:

“预览器里的 crypto 实现是 mock(模拟实现)”

也就是说:

你现在运行的不是系统真实加密模块,而是假实现。

所以会出现:

  • encryptText length = 0
  • decrypt failed
  • doFinal 无真实结果

这是正常现象。

你这个 AES 官方 Demo:

cryptoFramework.createCipher(...)

这种属于:

  • 系统安全能力
  • Native Crypto能力
  • 真机TEE/安全模块相关

很多都:

✅ 必须真机运行

✅ 或模拟器运行

❌ Previewer 不支持

你现在的问题本质上是:

不是 AES 失败,

而是 Previewer 根本没有真正执行 AES。

正确做法:

不要用 Previewer 调试 crypto。

直接:

  • Run 到真机
  • 或运行 HarmonyOS 模拟器

再测试。

官方很多系统能力都有这个限制,比如:

  • crypto
  • 网络
  • 蓝牙
  • sensor
  • 数据库
  • NAPI
  • 媒体能力

Previewer 都可能是 mock。

你日志已经明确提示了:

mocked implementation and may behave differently than on a real device

翻译就是:

“这是模拟实现,行为可能和真机不同。”

所以一句话总结:

AES 官方代码本身大概率没问题,你失败的原因是使用了 ArkTS Previewer 运行 crypto,加密能力在 Previewer 中是 mock 的,需要真机或模拟器调试。

好的,谢谢

加密算法需要底层库,真机系统有,预览器没有相应的加密算法库。

预览器可以用来调调UI布局啥的,功能逻辑,算法系统调用最好真机跑。

好的,谢谢

你把光标移动到有变黄色区域看看,加密的逻辑有黄色警告,通常是因为系统认为应该添加try catch抛异常,官方文档的案例代码通常只显示核心代码,不会加try catch的。

cke_3137.png

我是指控制台打印的黄色字,我刚用了真机调试,发现官方的代码加解密成功,但是用预览器启动的就是加解密失败

ArkTS加密失败常见原因:

  1. 密钥未使用cryptoFramework.createSymKeyGenerator正确生成。
  2. 算法模式/填充不匹配(如AES/GCM/NoPadding)。
  3. 输入数据未转为Uint8Array。
  4. 初始向量(IV)长度或值错误。
  5. 未调用cryptoFramework.createCipher且参数algName写错。

请检查以上代码实现。

预览器不支持加密框架API,这是加密失败的根因。文档中黄色提示明确说明部分能力仅真机/模拟器支持,加解密就在此列。预览器缺少硬件安全环境和完整Crypto Kit运行库,调用cryptoFramework.createSymKeyGenerator('AES')后获取密钥或执行doFinal都会直接失败或返回异常。将代码部署到真机或HarmonyOS Next模拟器运行即可正常加密。

回到顶部