• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 随机生成对称密钥(ArkTS)
2
3以AES和SM4为例,随机生成对称密钥(SymKey),并获得二进制数据。
4
5对称密钥对象可用于后续加解密操作,二进制数据可用于存储或运输。
6
7## 随机生成AES密钥
8
9对应的算法规格请查看[对称密钥生成和转换规格:AES](crypto-sym-key-generation-conversion-spec.md#aes)。
10
111. 调用[cryptoFramework.createSymKeyGenerator](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#cryptoframeworkcreatesymkeygenerator),指定字符串参数'AES256',创建密钥算法为AES、密钥长度为256位的对称密钥生成器(SymKeyGenerator)。
12
132. 调用[SymKeyGenerator.generateSymKey](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#generatesymkey-1),随机生成对称密钥对象(SymKey)。
14
153. 调用[SymKey.getEncoded](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#getencoded),获取密钥对象的二进制数据。
16
17- 以使用Promise方式随机生成AES密钥为例:
18
19  ```ts
20  import { cryptoFramework } from '@kit.CryptoArchitectureKit';
21
22  function testGenerateAesKey() {
23    // 创建SymKeyGenerator实例。
24    let symKeyGenerator = cryptoFramework.createSymKeyGenerator('AES256');
25    // 使用密钥生成器随机生成对称密钥。
26    let promiseSymKey = symKeyGenerator.generateSymKey();
27    promiseSymKey.then(key => {
28      // 获取对称密钥的二进制数据,输出256位密钥。长度为32字节。
29      let encodedKey = key.getEncoded();
30      console.info('key hex:' + encodedKey.data);
31    });
32  }
33  ```
34
35- 同步方法(调用方法[generateSymKeySync](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#generatesymkeysync12)):
36  ```ts
37  import { cryptoFramework } from '@kit.CryptoArchitectureKit';
38
39  function testSyncGenerateAesKey() {
40    // 创建SymKeyGenerator实例。
41    let symKeyGenerator = cryptoFramework.createSymKeyGenerator('AES256');
42    // 使用密钥生成器随机生成对称密钥。
43    let promiseSymKey = symKeyGenerator.generateSymKeySync();
44    // 获取对称密钥的二进制数据,输出256位密钥。长度为32字节。
45    let encodedKey = promiseSymKey.getEncoded();
46    console.info('key hex:' + encodedKey.data);
47  }
48  ```
49
50## 随机生成SM4密钥
51
52对应的算法规格请查看[对称密钥生成和转换规格:SM4](crypto-sym-key-generation-conversion-spec.md#sm4)。
53
541. 调用[cryptoFramework.createSymKeyGenerator](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#cryptoframeworkcreatesymkeygenerator),指定字符串参数'SM4_128',创建密钥算法为SM4、密钥长度为128位的对称密钥生成器(SymKeyGenerator)。
55   如果开发者需要使用其他算法,请注意修改此处入参的字符串参数。
56
572. 调用[SymKeyGenerator.generateSymKey](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#generatesymkey-1),随机生成对称密钥对象(SymKey)。
58
593. 调用[SymKey.getEncoded](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#getencoded),获取密钥对象的二进制数据。
60
61- 以使用Promise方式随机生成SM4密钥为例:
62
63  ```ts
64  import { cryptoFramework } from '@kit.CryptoArchitectureKit';
65
66  function testGenerateSM4Key() {
67    // 创建SymKeyGenerator实例。
68    let symKeyGenerator = cryptoFramework.createSymKeyGenerator('SM4_128');
69    // 使用密钥生成器随机生成对称密钥。
70    let promiseSymKey = symKeyGenerator.generateSymKey();
71    promiseSymKey.then(key => {
72      // 获取对称密钥的二进制数据,输出128位字节流。长度为16字节。
73      let encodedKey = key.getEncoded();
74      console.info('key hex:' + encodedKey.data);
75    });
76  }
77  ```
78
79- 同步方法(调用方法[generateSymKeySync](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#generatesymkeysync12)):
80  ```ts
81  import { cryptoFramework } from '@kit.CryptoArchitectureKit';
82
83  function testSyncGenerateSm4Key() {
84    // 创建SymKeyGenerator实例。
85    let symKeyGenerator = cryptoFramework.createSymKeyGenerator('SM4_128');
86    // 使用密钥生成器随机生成对称密钥。
87    let promiseSymKey = symKeyGenerator.generateSymKeySync();
88    // 获取对称密钥的二进制数据,输出128位字节流。长度为16字节。
89    let encodedKey = promiseSymKey.getEncoded();
90    console.info('key hex:' + encodedKey.data);
91  }
92  ```
93