harmony 鸿蒙随机生成非对称密钥对(ArkTS)

  • 2025-06-16
  • 浏览 (4)

随机生成非对称密钥对(ArkTS)

以RSA和SM2为例,随机生成非对称密钥对(KeyPair),并获得二进制数据。

非对称密钥对可用于后续加解密等操作,二进制数据可用于存储或运输。

随机生成RSA密钥对

对应的算法规格请查看非对称密钥生成和转换规格:RSA

  1. 调用cryptoFramework.createAsyKeyGenerator,指定字符串参数’RSA1024|PRIMES_2’,创建RSA密钥类型为RSA1024、素数个数为2的非对称密钥生成器(AsyKeyGenerator)。

  2. 调用AsyKeyGenerator.generateKeyPair,随机生成非对称密钥对象(KeyPair)。

KeyPair对象中包括公钥PubKey、私钥PriKey。

  1. 调用PubKey.getEncodedPriKey.getEncoded,分别获取密钥对象的二进制数据。

  2. 以使用Promise方式随机生成RSA密钥对为例: “`ts import { cryptoFramework } from ‘@kit.CryptoArchitectureKit’;

function generateAsyKey() { // 创建一个AsyKeyGenerator实例。 let rsaGenerator = cryptoFramework.createAsyKeyGenerator(‘RSA1024|PRIMES_2’); // 使用密钥生成器随机生成非对称密钥对。 let keyGenPromise = rsaGenerator.generateKeyPair(); keyGenPromise.then(keyPair => { let pubKey = keyPair.pubKey; let priKey = keyPair.priKey; // 获取非对称密钥对的二进制数据。 let pkBlob = pubKey.getEncoded(); let skBlob = priKey.getEncoded(); console.info(‘pk bin data’ + pkBlob.data); console.info(‘sk bin data’ + skBlob.data); }); }


- 同步返回结果(调用方法[generateKeyPairSync](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#generatekeypairsync12)):
  ```ts
  import { cryptoFramework } from '@kit.CryptoArchitectureKit';

  function generateAsyKeySync() {
    // 创建一个AsyKeyGenerator实例。
    let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024|PRIMES_2');
    // 使用密钥生成器随机生成非对称密钥对。
    try {
      let keyPair = rsaGenerator.generateKeyPairSync();
      if (keyPair !== null) {
        let pubKey = keyPair.pubKey;
        let priKey = keyPair.priKey;
        // 获取非对称密钥对的二进制数据。
        let pkBlob = pubKey.getEncoded();
        let skBlob = priKey.getEncoded();
        console.info('pk bin data' + pkBlob.data);
        console.info('sk bin data' + skBlob.data);
      } else {
        console.error("[Sync]: get key pair result fail!");
      }
    } catch (e) {
      console.error(`get key pair failed, ${e.code}, ${e.message}`);
    }
  }

随机生成SM2密钥对

对应的算法规格请查看非对称密钥生成和转换规格:SM2

  1. 调用cryptoFramework.createAsyKeyGenerator,指定字符串参数’SM2_256’,创建密钥算法为SM2、密钥长度为256位的非对称密钥生成器(AsyKeyGenerator)。

  2. 调用AsyKeyGenerator.generateKeyPair,随机生成非对称密钥对象(KeyPair)。

KeyPair对象中包括公钥PubKey、私钥PriKey。

  1. 调用PubKey.getEncodedPriKey.getEncoded,分别获取密钥对象的二进制数据。

  2. 以使用Promise方式随机生成SM2密钥对为例: “`ts import { cryptoFramework } from ‘@kit.CryptoArchitectureKit’;

function generateSM2Key() { // 创建一个AsyKeyGenerator实例。 let sm2Generator = cryptoFramework.createAsyKeyGenerator(‘SM2_256’); // 使用密钥生成器随机生成非对称密钥对。 let keyGenPromise = sm2Generator.generateKeyPair(); keyGenPromise.then(keyPair => { let pubKey = keyPair.pubKey; let priKey = keyPair.priKey; // 获取非对称密钥对的二进制数据。 let pkBlob = pubKey.getEncoded(); let skBlob = priKey.getEncoded(); console.info(‘pk bin data’ + pkBlob.data); console.info(‘sk bin data’ + skBlob.data); }); }


- 同步返回结果(调用方法[generateKeyPairSync](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#generatekeypairsync12)):
  ```ts
  import { cryptoFramework } from '@kit.CryptoArchitectureKit';

  function generateSM2KeySync() {
    // 创建一个AsyKeyGenerator实例。
    let rsaGenerator = cryptoFramework.createAsyKeyGenerator('SM2_256');
    // 使用密钥生成器随机生成非对称密钥对。
    try {
      let keyPair = rsaGenerator.generateKeyPairSync();
      if (keyPair !== null) {
        let pubKey = keyPair.pubKey;
        let priKey = keyPair.priKey;
        // 获取非对称密钥对的二进制数据。
        let pkBlob = pubKey.getEncoded();
        let skBlob = priKey.getEncoded();
        console.info('pk bin data' + pkBlob.data);
        console.info('sk bin data' + skBlob.data);
      } else {
        console.error("[Sync]: get key pair result fail!");
      }
    } catch (e) {
      console.error(`get key pair failed, ${e.code}, ${e.message}`);
    }
  }

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Crypto Architecture Kit(加解密算法框架服务)

harmony 鸿蒙使用3DES对称密钥(ECB模式)加解密(C/C++)

harmony 鸿蒙使用3DES对称密钥(ECB模式)加解密(ArkTS)

harmony 鸿蒙使用AES对称密钥(CBC模式)加解密(C/C++)

harmony 鸿蒙使用AES对称密钥(CBC模式)加解密(ArkTS)

harmony 鸿蒙使用AES对称密钥(CCM模式)加解密(C/C++)

harmony 鸿蒙使用AES对称密钥(CCM模式)加解密(ArkTS)

harmony 鸿蒙使用AES对称密钥(ECB模式)加解密(C/C++)

harmony 鸿蒙使用AES对称密钥(ECB模式)加解密(ArkTS)

harmony 鸿蒙使用AES对称密钥(GCM模式)分段加解密(C/C++)

0  赞