密钥使用介绍及通用流程
===========

为了实现对数据机密性、完整性等保护，可使用生成/导入的密钥，对数据进行密钥操作，比如：

*   [加密/解密](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/huks-encryption-decryption-overview)。
    
*   [签名/验签](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/huks-signing-signature-verification-overview)。
    
*   [密钥协商](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/huks-key-agreement-overview)。
    
*   [密钥派生](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/huks-key-derivation-overview)。
    

本章节提供了以上常用密钥操作的示例，这部分示例均没有设置二次身份访问控制，如设置了密钥访问控制请参考[用户身份认证访问控制](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/huks-identity-authentication-overview)。

从API 23开始支持[群组密钥](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/huks-group-key-overview)特性。

#### 通用开发流程

HUKS基于密钥会话来操作数据，使用密钥时基于以下流程：

1.  （必选）初始化密钥会话[initSession](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-huks#huksinitsession9)。
    
    传入密钥别名和密钥操作参数，初始化一个密钥会话并获取会话句柄。其中密钥操作参数必须包含对应密码算法所必须的参数，包括密码算法、密钥大小、密钥目的、工作模式、填充模式、散列模式、IV、NONCE、AAD等。
    
2.  （可选）分段操作数据[updateSession](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-huks#huksupdatesession9)。
    
    当使用的数据过大（超过100K）或是部分密码算法有要求时，需要对数据进行分段操作。否则可跳过此步骤。
    
3.  （必选）结束密钥会话[finishSession](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-huks#huksfinishsession9)。
    
    操作最后一段数据并结束密钥会话。
    

以上任一阶段中发生错误或不需要此次密钥操作数据，均需要取消会话[abortSession](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-huks#huksabortsession9)，终止密钥的使用。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/3e/v3/n-0Vs81lR4SBMy5-BgtVDA/caution_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073419Z&HW-CC-Expire=86400&HW-CC-Sign=213CA402C1A77A10B0462975F7D2BDFD3AE4BA1169F44F0929436C811FEE6EF7)

*   对于内存较小设备，建议业务根据设备存储能力，进行数据切分，循环调用[initSession](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-huks#huksinitsession9)和[finishSession](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-huks#huksfinishsession9)处理。
*   会话持续时间即[initSession](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-huks#huksinitsession9)和[finishSession](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-huks#huksfinishsession9)调用间隔，系统低内存时将清理超时会话，因此会话持续时间不宜过久（不建议超过1分钟）。