• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 随机生成非对称密钥对
2
3
4以RSA和SM2为例,随机生成非对称密钥对(KeyPair),并获得二进制数据。
5
6
7非对称密钥对可用于后续加解密等操作,二进制数据可用于存储或运输。
8
9
10## 随机生成RSA密钥对
11
12对应的算法规格请查看[非对称密钥生成和转换规格:RSA](crypto-asym-key-generation-conversion-spec.md#rsa)。
13
141. 调用[cryptoFramework.createAsyKeyGenerator](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#cryptoframeworkcreateasykeygenerator),指定字符串参数'RSA1024|PRIMES_2',创建RSA密钥类型为RSA1024、素数个数为2的非对称密钥生成器(AsyKeyGenerator)。
15
162. 调用[AsyKeyGenerator.generateKeyPair](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#generatekeypair-1),随机生成非对称密钥对象(KeyPair)。
17
18   KeyPair对象中包括公钥PubKey、私钥PriKey。
19
203. 调用[PubKey.getEncoded](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#getencoded)和[PriKey.getEncoded](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#getencoded),分别获取密钥对象的二进制数据。
21
22以使用Promise方式随机生成RSA密钥对为例:
23
24```ts
25import cryptoFramework from '@ohos.security.cryptoFramework';
26
27function generateAsyKey() {
28  // 创建一个AsyKeyGenerator实例
29  let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024|PRIMES_2');
30  // 使用密钥生成器随机生成非对称密钥对
31  let keyGenPromise = rsaGenerator.generateKeyPair();
32  keyGenPromise.then(keyPair => {
33    let pubKey = keyPair.pubKey;
34    let priKey = keyPair.priKey;
35    // 获取非对称密钥对的二进制数据
36    let pkBlob = pubKey.getEncoded();
37    let skBlob = priKey.getEncoded();
38    AlertDialog.show({ message: 'pk bin data' + pkBlob.data });
39    AlertDialog.show({ message: 'sk bin data' + skBlob.data });
40  });
41}
42```
43
44
45## 随机生成SM2密钥对
46
47对应的算法规格请查看[非对称密钥生成和转换规格:SM2](crypto-asym-key-generation-conversion-spec.md#sm2)。
48
491. 调用[cryptoFramework.createAsyKeyGenerator](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#cryptoframeworkcreateasykeygenerator),指定字符串参数'SM2_256',创建密钥算法为SM2、密钥长度为256位的非对称密钥生成器(AsyKeyGenerator)。
50
512. 调用[AsyKeyGenerator.generateKeyPair](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#generatekeypair-1),随机生成非对称密钥对象(KeyPair)。
52
53   KeyPair对象中包括公钥PubKey、私钥PriKey。
54
553. 调用[PubKey.getEncoded](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#getencoded)和[PriKey.getEncoded](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#getencoded),分别获取密钥对象的二进制数据。
56
57以使用Promise方式随机生成SM2密钥对为例:
58
59```ts
60import cryptoFramework from '@ohos.security.cryptoFramework';
61
62function generateSM2Key() {
63  // 创建一个AsyKeyGenerator实例
64  let sm2Generator = cryptoFramework.createAsyKeyGenerator('SM2_256');
65  // 使用密钥生成器随机生成非对称密钥对
66  let keyGenPromise = sm2Generator.generateKeyPair();
67  keyGenPromise.then(keyPair => {
68    let pubKey = keyPair.pubKey;
69    let priKey = keyPair.priKey;
70    // 获取非对称密钥对的二进制数据
71    let pkBlob = pubKey.getEncoded();
72    let skBlob = priKey.getEncoded();
73    AlertDialog.show({ message: 'pk bin data' + pkBlob.data });
74    AlertDialog.show({ message: 'sk bin data' + skBlob.data });
75  });
76}
77```
78