目录

使用ECIES混合加解密(ArkTS)

从API版本26.0.0开始,支持ECIES算法,ECIES是一种基于椭圆曲线密码学的加密算法。

约束条件:

开发步骤

[h2]加密

  1. 调用cryptoFramework.createAsyKeyGenerator和AsyKeyGenerator.generateKeyPair,使用ECC算法生成密钥对。

  2. 调用cryptoFramework.createKeyAgreement和KeyAgreement.generateSecret,基于本端的私钥(KeyPair.priKey)与对端的公钥(KeyPair.pubKey)进行密钥协商,返回共享密钥。

  3. X963KDF密钥派生,调用cryptoFramework.createKdf和Kdf.generateSecret,基于协商的共享密钥(Secret)进行密钥派生,返回派生后的密钥。

  4. 调用cryptoFramework.createCipher,指定字符串参数'AES128|GCM',创建对称密钥类型为AES128、分组模式为GCM的Cipher实例,用于完成加密操作。

  5. 调用Cipher.init,设置模式为加密(cryptoFramework.CryptoMode.ENCRYPT_MODE),指定加密密钥(SymKey)和GCM模式对应的加密参数(GcmParamsSpec),初始化加密Cipher实例。

  6. 调用Cipher.update,更新数据(明文)。

  7. 调用Cipher.doFinal,获取加密后的数据。

  8. 读取GcmParamsSpec.authTag作为解密的认证信息。

[h2]解密

  1. 调用cryptoFramework.createAsyKeyGenerator和AsyKeyGenerator.generateKeyPair,使用ECC算法生成密钥对。

  2. 调用cryptoFramework.createKeyAgreement和KeyAgreement.generateSecret,基于本端的私钥(KeyPair.priKey)与对端的公钥(KeyPair.pubKey)进行密钥协商,返回共享密钥。

  3. X963KDF密钥派生,调用cryptoFramework.createKdf和Kdf.generateSecret,基于协商的共享密钥(Secret)进行密钥派生,返回派生后的密钥。

  4. 调用cryptoFramework.createCipher,指定字符串参数'AES128|GCM',创建对称密钥类型为AES128、分组模式为GCM的Cipher实例,用于完成解密操作。

  5. 调用Cipher.init,设置模式为解密(cryptoFramework.CryptoMode.DECRYPT_MODE),指定解密密钥(SymKey)和GCM模式对应的解密参数(GcmParamsSpec),初始化解密Cipher实例。

  6. 调用Cipher.update,更新数据(密文)。

  7. 调用Cipher.doFinal,获取解密后的数据。

[h2]示例代码