1# 随机生成对称密钥 2 3 4以AES和SM4为例,随机生成对称密钥(SymKey),并获得二进制数据。 5 6 7对称密钥对象可用于后续加解密操作,二进制数据可用于存储或运输。 8 9 10## 随机生成AES密钥 11 12对应的算法规格请查看[对称密钥生成和转换规格:AES](crypto-sym-key-generation-conversion-spec.md#aes)。 13 141. 调用[cryptoFramework.createSymKeyGenerator](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#cryptoframeworkcreatesymkeygenerator),指定字符串参数'AES256',创建密钥算法为AES、密钥长度为256位的对称密钥生成器(SymKeyGenerator)。 15 162. 调用[SymKeyGenerator.generateSymKey](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#generatesymkey-1),随机生成对称密钥对象(SymKey)。 17 183. 调用[SymKey.getEncoded](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#getencoded),获取密钥对象的二进制数据。 19 20以使用Promise方式随机生成AES密钥为例: 21 22```ts 23import cryptoFramework from '@ohos.security.cryptoFramework'; 24 25function testGenerateAesKey() { 26 // 创建SymKeyGenerator实例 27 let symKeyGenerator = cryptoFramework.createSymKeyGenerator('AES256'); 28 // 使用密钥生成器随机生成对称密钥 29 let promiseSymKey = symKeyGenerator.generateSymKey(); 30 promiseSymKey.then(key => { 31 // 获取对称密钥的二进制数据,输出256位密钥。长度为32字节 32 let encodedKey = key.getEncoded(); 33 console.info('key hex:' + encodedKey.data); 34 }); 35} 36``` 37 38 39## 随机生成SM4密钥 40 41对应的算法规格请查看[对称密钥生成和转换规格:SM4](crypto-sym-key-generation-conversion-spec.md#sm4)。 42 431. 调用[cryptoFramework.createSymKeyGenerator](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#cryptoframeworkcreatesymkeygenerator),指定字符串参数'SM4_128',创建密钥算法为SM4、密钥长度为128位的对称密钥生成器(SymKeyGenerator)。 44 如果开发者需要使用其他算法,请注意修改此处入参的字符串参数。 45 462. 调用[SymKeyGenerator.generateSymKey](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#generatesymkey-1),随机生成对称密钥对象(SymKey)。 47 483. 调用[SymKey.getEncoded](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#getencoded),获取密钥对象的二进制数据。 49 50以使用Promise方式随机生成SM4密钥为例: 51 52```ts 53import cryptoFramework from '@ohos.security.cryptoFramework'; 54 55function testGenerateSM4Key() { 56 // 创建SymKeyGenerator实例 57 let symKeyGenerator = cryptoFramework.createSymKeyGenerator('SM4_128'); 58 // 使用密钥生成器随机生成对称密钥 59 let promiseSymKey = symKeyGenerator.generateSymKey(); 60 promiseSymKey.then(key => { 61 // 获取对称密钥的二进制数据,输出128位字节流。长度为16字节 62 let encodedKey = key.getEncoded(); 63 console.info('key hex:' + encodedKey.data); 64 }); 65} 66``` 67