HarmonyOS 鸿蒙Next中怎么使用ZUC(祖冲之)算法?

HarmonyOS 鸿蒙Next中怎么使用ZUC(祖冲之)算法? 【问题现象】

Crypto Architecture Kit是否支持ZUC(祖冲之)算法?

【解决方案】

目前Crypto Architecture Kit暂不支持ZUC(祖冲之)算法,可参考三方库:[@letter/crypto](https://ohpm.openharmony.cn/#/cn/detail/@letter%2Fcrypto)中的祖冲之加解密。

3 回复

目前公开的 Crypto Architecture Kit 能力里没有把 ZUC 作为直接可调用算法暴露出来,所以不能按 AES/SM 系列那样直接从系统加密框架里取一个 ZUC cipher 使用。

如果业务确实需要祖冲之算法,建议走三方库或自研封装,但要注意三点:1. 用标准测试向量验证 ZUC-128/ZUC-256、EEA/EIA 模式是否完全一致;2. 确认库的许可证、维护状态和 HarmonyOS/ArkTS/Native 适配方式;3. 密钥、IV、计数器等参数不要在日志和公开帖里输出。

如果是合规、安全等级较高的业务,不建议直接把网上零散实现拷进工程,最好选有明确测试用例和可审计来源的实现。

更多关于HarmonyOS 鸿蒙Next中怎么使用ZUC(祖冲之)算法?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,使用ZUC算法需通过安全加密框架@ohos.security.cryptoFramework。调用Cipher.createCipher('ZUC128')'ZUC256'创建实例,传入密钥和初始化向量(IV)后,执行doFinalupdate完成加解密。具体参数参考API文档中ZUC算法规范。

HarmonyOS NEXT 的 Crypto Architecture Kit 暂未内置 ZUC(祖冲之)算法的 API,目前官方加解密框架不提供该算法的直接调用。

如需使用 ZUC 算法,可引入三方库 @letter/crypto,该库已适配 HarmonyOS,并封装了祖冲之流密码的加解密能力。基本使用方式如下(示例为 ZUC-128 的加解密,仅演示调用思路):

import { ZUC } from '@letter/crypto';

// 密钥和 IV(16 字节密钥 + 16 字节 IV)
let key = new Uint8Array([...]);   // 128 bit key
let iv = new Uint8Array([...]);    // 128 bit iv
let plainText = new Uint8Array([...]);

// 创建 ZUC 实例,指定密钥和 IV
let zuc = new ZUC(key, iv);

// 加密:输入明文得到密文(同步流加密)
let cipherText = zuc.encrypt(plainText);

// 解密:重新初始化相同实例,再加密密文即可得到明文
zuc.reset(key, iv);
let decryptedText = zuc.decrypt(cipherText);

注意:

  • 该库支持 ZUC-128 和 ZUC-256,使用时需参考库的文档区分模式。
  • 流密码加密与解密常用同一过程,调用 encrypt 后可通过 reset 重置状态再进行解密。
  • 使用前需在 oh-package.json5 中添加依赖:"@letter/crypto": "^1.0.0"(版本号以实际开源库为准)。

若项目有更高的合规或性能要求,也可自行用 C/C++ 实现 ZUC 并通过 NAPI 封装,或等待未来 Crypto Architecture Kit 可能提供的原生支持。

回到顶部