1e41f4b71Sopenharmony_ci# @system.cipher (加密算法)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci> **说明:**
4e41f4b71Sopenharmony_ci>
5e41f4b71Sopenharmony_ci> 本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci> 从API version 9开始废弃, 建议使用[@ohos.security.cryptoFramework的Cipher](js-apis-cryptoFramework.md#cipher)替代。
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci## 导入模块
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci```js
13e41f4b71Sopenharmony_ciimport cipher from '@system.cipher';
14e41f4b71Sopenharmony_ci```
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci## CipherResponse
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci调用cipher接口后,返回的内容。
19e41f4b71Sopenharmony_ci
20e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Security.Cipher
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci| 名称 | 类型   | 可读 | 可写 |说明         |
23e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---- | ------------ |
24e41f4b71Sopenharmony_ci| text   | string | 是   | 否   | 返回的内容。 |
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci## CipherRsaOptions
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci调用cipher rsa方法时,传入的参数。
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Security.Cipher
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ci| 名称         | 类型                                 | 必填 | 说明                                                         |
34e41f4b71Sopenharmony_ci| -------------- | ------------------------------------ | ---- | ------------------------------------------------------------ |
35e41f4b71Sopenharmony_ci| action         | string                               | 是   | 加密类型,可选项有:<br/>1. encrypt 加密;<br/>2. decrypt 解密。 |
36e41f4b71Sopenharmony_ci| text           | string                               | 是   | 待加密或解密的文本内容。待加密的文本内容应该是一段普通文本,长度不能超过 keySize / 8 - 66,其中 keySize 是密钥的长度(例如密钥长度为 1024 时,text 不能超过 62 个字节)。待解密的文本内容应该是经过 base64 编码的一段二进制值。base64 编码使用默认风格。 |
37e41f4b71Sopenharmony_ci| key            | string                               | 是   | 加密的密钥,RSA的密钥。加密时key为公钥,解密时key为私钥。      |
38e41f4b71Sopenharmony_ci| transformation | string                               | 否   | RSA算法的填充项,默认为RSA/None/OAEPWithSHA256AndMGF1Padding。 |
39e41f4b71Sopenharmony_ci| success        | (data: [CipherResponse](#cipherresponse)) => void       | 否   | 接口调用成功的回调函数。                                     |
40e41f4b71Sopenharmony_ci| fail           | (data: string, code: number) => void | 否   | 接口调用失败的回调函数。                                     |
41e41f4b71Sopenharmony_ci| complete       | () => void                           | 否   | 接口调用结束的回调函数。                                     |
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci## CipherAesOptions
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci调用cipher aes方法时,传入的参数。
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Security.Cipher
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci| 名称         | 类型                                 | 必填 | 说明                                                         |
50e41f4b71Sopenharmony_ci| -------------- | ------------------------------------ | ---- | ------------------------------------------------------------ |
51e41f4b71Sopenharmony_ci| action         | string                               | 是   | 加密类型,可选项有:<br/>1. encrypt 加密;<br/>2. decrypt 解密。 |
52e41f4b71Sopenharmony_ci| text           | string                               | 是   | 待加密或解密的文本内容。待加密的文本内容应该是一段普通文本。待解密的文本内容应该是经过 base64 编码的一段二进制值。base64 编码使用默认风格。 |
53e41f4b71Sopenharmony_ci| key            | string                               | 是   | 加密或解密使用到的密钥,经过 base64 编码后生成的字符串。 |
54e41f4b71Sopenharmony_ci| transformation | string                               | 否   | AES算法的加密模式和填充项,默认AES/CBC/PKCS5Padding。          |
55e41f4b71Sopenharmony_ci| iv             | string                               | 否   | AES加解密的初始向量,经过base64编码后的字符串,默认值为key值。 |
56e41f4b71Sopenharmony_ci| ivOffset       | string                               | 否   | AES加解密的初始向量偏移,默认值0,仅支持0。                  |
57e41f4b71Sopenharmony_ci| ivLen          | string                               | 否   | AES加解密的初始向量字节长度,当前为预留字段,默认值16,仅支持16。 |
58e41f4b71Sopenharmony_ci| success        | (data: [CipherResponse](#cipherresponse)) => void       | 否   | 接口调用成功的回调函数。                                     |
59e41f4b71Sopenharmony_ci| fail           | (data: string, code: number) => void | 否   | 接口调用失败的回调函数。                                     |
60e41f4b71Sopenharmony_ci| complete       | () => void                           | 否   | 接口调用结束的回调函数。                                     |
61e41f4b71Sopenharmony_ci
62e41f4b71Sopenharmony_ci## cipher.rsa
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_cirsa(options: CipherRsaOptions): void
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ciRSA 算法加解密。
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.Cipher
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci**参数:**
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
73e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
74e41f4b71Sopenharmony_ci| options | [CipherRsaOptions](#cipherrsaoptions) | 是 | rsa加解密需要设置的参数。 |
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci**示例:**
77e41f4b71Sopenharmony_ci
78e41f4b71Sopenharmony_ci```js
79e41f4b71Sopenharmony_ciexport default {
80e41f4b71Sopenharmony_ci  rsa() {
81e41f4b71Sopenharmony_ci    cipher.rsa({
82e41f4b71Sopenharmony_ci      //加密
83e41f4b71Sopenharmony_ci      action: 'encrypt',
84e41f4b71Sopenharmony_ci      //待加密的文本内容
85e41f4b71Sopenharmony_ci      text: 'hello',
86e41f4b71Sopenharmony_ci      //base64编码后的加密公钥
87e41f4b71Sopenharmony_ci      key:
88e41f4b71Sopenharmony_ci     'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCx414QSP3RsYWYzf9mkBMiBAXo\n' +
89e41f4b71Sopenharmony_ci     '6S7Lpva1fKlcuVxjoFC1iMnzD4mC0uiL4k5MNi43J64c7dbqi3qAJjdAtuwQ6NZJ\n' +
90e41f4b71Sopenharmony_ci     '+Enz0RzmVFh/4yk6lmqRzuEFQqhQqSZzaLq6sq2N2G0Sv2Xl3sLvqAfe2HNm2oBw\n' +
91e41f4b71Sopenharmony_ci     'jBpApTJ3TeneOo6Z5QIDAQAB',
92e41f4b71Sopenharmony_ci      success: function(data) {
93e41f4b71Sopenharmony_ci        console.log(`handling success:${data.text}`);
94e41f4b71Sopenharmony_ci      },
95e41f4b71Sopenharmony_ci      fail: function(data, code) {
96e41f4b71Sopenharmony_ci        console.log(`### cipher.rsa encrypt fail ### ${code}:${data}`);
97e41f4b71Sopenharmony_ci      },
98e41f4b71Sopenharmony_ci      complete: function() {
99e41f4b71Sopenharmony_ci        console.log(`operation complete!`);
100e41f4b71Sopenharmony_ci      }
101e41f4b71Sopenharmony_ci      });
102e41f4b71Sopenharmony_ci      cipher.rsa({
103e41f4b71Sopenharmony_ci        //解密:
104e41f4b71Sopenharmony_ci        action: 'decrypt',
105e41f4b71Sopenharmony_ci        //待解密的内容,是base64编码后的一段二进制值,解密后是文本内容“hello”
106e41f4b71Sopenharmony_ci        text:
107e41f4b71Sopenharmony_ci       'EPeCFPib6ayKbA0M6oSywARvFZ8dFYfjQv3nY8ikZGtS9UHq2sLPvAfpeIzggSiCxqbWeCftP1XQ\n' +
108e41f4b71Sopenharmony_ci       'Sa+jEpzFlT1qoSTunBbrYzugPTajIJDTg6R1IRsF/J+mmakn0POVPvi4jCo9wqavB324Bx0Wipnc\n' +
109e41f4b71Sopenharmony_ci       'EU5WO0oBHo5l4x6dTpU=',
110e41f4b71Sopenharmony_ci         //base64编码后的解密私钥
111e41f4b71Sopenharmony_ci         key:
112e41f4b71Sopenharmony_ci        'MIICXgIBAAKBgQCx414QSP3RsYWYzf9mkBMiBAXo6S7Lpva1fKlcuVxjoFC1iMnz\n' +
113e41f4b71Sopenharmony_ci        'D4mC0uiL4k5MNi43J64c7dbqi3qAJjdAtuwQ6NZJ+Enz0RzmVFh/4yk6lmqRzuEF\n' +
114e41f4b71Sopenharmony_ci        'QqhQqSZzaLq6sq2N2G0Sv2Xl3sLvqAfe2HNm2oBwjBpApTJ3TeneOo6Z5QIDAQAB\n' +
115e41f4b71Sopenharmony_ci        'AoGBAKPNtoRQcklxqo+2wQP0j2m3Qqnib1DggjVEgb/8f/LNYQSI3U2QdROemryU\n' +
116e41f4b71Sopenharmony_ci        'u3y6N3xacZ359PktTrRKfH5+8ohmHGhIuPAnefp6bLvAFUcl4t1xm74Cow62Kyw3\n' +
117e41f4b71Sopenharmony_ci        'aSbmuTG98dxPA1sXD0jiprdtsq2wQ9CoKNyY7/d/pKoqxNuBAkEA4GytZ60NCTj9\n' +
118e41f4b71Sopenharmony_ci        'w24jACFeko5YqCFY/TTLoc4SQvWtFMnimRPclLZhtUIK0P8dib71UFedx+AxklgL\n' +
119e41f4b71Sopenharmony_ci        'A5gjcfo+2QJBAMrqiwyCh3OQ5DhyRPDwt87x1/jg5fy4hhete2ufSf2FoQCVqO+w\n' +
120e41f4b71Sopenharmony_ci        'PKoljdXmJeS6rGgzGibstuHLrP3tcIho4+0CQD3ZFWzF/xq0jxKlrpWhnJuNCRfE\n' +
121e41f4b71Sopenharmony_ci        'oO6e9yNvVA8J/5oEDSOcmqSNIp4+RhbUx8InUxnCG6Ryv5aSFu71pYcKrPkCQQCL\n' +
122e41f4b71Sopenharmony_ci        'RUGcm3ZGTnslduB0knNF+V2ndwzDUQ7P74UXT+PjurTPhujFYiuxCEd6ORVnEOzG\n' +
123e41f4b71Sopenharmony_ci        'M9TORIgdH8MjIbWsGnndAkEAw9yURDaorE8IYPLF2IEn09g1uzvWPs3phDb6smVx\n' +
124e41f4b71Sopenharmony_ci        '8GfqIdUNf+aCG5TZK/kXBF1sqcsi7jXMAf4jBlejVbSVZg==',
125e41f4b71Sopenharmony_ci         success: function(data) {
126e41f4b71Sopenharmony_ci           console.log(`handling success:${data.text}`);
127e41f4b71Sopenharmony_ci         },
128e41f4b71Sopenharmony_ci         fail: function(data, code) {
129e41f4b71Sopenharmony_ci           console.log(`### cipher.rsa encrypt fail ### ${code}:${data}`);
130e41f4b71Sopenharmony_ci         },
131e41f4b71Sopenharmony_ci         complete: function() {
132e41f4b71Sopenharmony_ci           console.log(`operation complete!`);
133e41f4b71Sopenharmony_ci         }
134e41f4b71Sopenharmony_ci       });
135e41f4b71Sopenharmony_ci   }
136e41f4b71Sopenharmony_ci}
137e41f4b71Sopenharmony_ci```
138e41f4b71Sopenharmony_ci
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci## cipher.aes
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ciaes(options: CipherAesOptions): void
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ciAES 算法加解密。
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.Cipher
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci**参数:**
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
151e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
152e41f4b71Sopenharmony_ci| options | [CipherAesOptions](#cipheraesoptions) | 是 | aes加解密需要设置的参数。 |
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci**示例:**
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ci```js
157e41f4b71Sopenharmony_ciexport default {
158e41f4b71Sopenharmony_ci  aes() {
159e41f4b71Sopenharmony_ci    cipher.aes({
160e41f4b71Sopenharmony_ci      //加密
161e41f4b71Sopenharmony_ci      action: 'encrypt',
162e41f4b71Sopenharmony_ci      //待加密的文本内容
163e41f4b71Sopenharmony_ci      text: 'hello',
164e41f4b71Sopenharmony_ci      //base64编码后的密钥
165e41f4b71Sopenharmony_ci      key: 'NDM5Qjk2UjAzMEE0NzVCRjlFMkQwQkVGOFc1NkM1QkQ=',
166e41f4b71Sopenharmony_ci      transformation: 'AES/CBC/PKCS5Padding',
167e41f4b71Sopenharmony_ci      ivOffset: '0',
168e41f4b71Sopenharmony_ci      ivLen: '16',
169e41f4b71Sopenharmony_ci      success: function(data) {
170e41f4b71Sopenharmony_ci        console.log(`handling success:${data.text}`);
171e41f4b71Sopenharmony_ci        },
172e41f4b71Sopenharmony_ci      fail: function(data, code) {
173e41f4b71Sopenharmony_ci        console.log(`### cipher.rsa encrypt fail ### ${code}:${data}`);
174e41f4b71Sopenharmony_ci        },
175e41f4b71Sopenharmony_ci      complete: function() {
176e41f4b71Sopenharmony_ci        console.log(`operation complete!`);
177e41f4b71Sopenharmony_ci      }
178e41f4b71Sopenharmony_ci    });
179e41f4b71Sopenharmony_ci    cipher.aes({
180e41f4b71Sopenharmony_ci      //解密:
181e41f4b71Sopenharmony_ci      action: 'decrypt',
182e41f4b71Sopenharmony_ci      //待解密的内容,是base64编码后的一段二进制值
183e41f4b71Sopenharmony_ci      text: '1o0kf2HXwLxHkSh5W5NhzA==',
184e41f4b71Sopenharmony_ci       //base64编码后的密钥
185e41f4b71Sopenharmony_ci       key: 'NDM5Qjk2UjAzMEE0NzVCRjlFMkQwQkVGOFc1NkM1QkQ=',
186e41f4b71Sopenharmony_ci       transformation: 'AES/CBC/PKCS5Padding',
187e41f4b71Sopenharmony_ci       ivOffset: '0',
188e41f4b71Sopenharmony_ci       ivLen: '16',
189e41f4b71Sopenharmony_ci       success: function(data) {
190e41f4b71Sopenharmony_ci         console.log(`handling success:${data.text}`);
191e41f4b71Sopenharmony_ci        },
192e41f4b71Sopenharmony_ci       fail: function(data, code) {
193e41f4b71Sopenharmony_ci         console.log(`### cipher.aes encrypt fail ### ${code}:${data}`);
194e41f4b71Sopenharmony_ci       },
195e41f4b71Sopenharmony_ci       complete: function() {
196e41f4b71Sopenharmony_ci         console.log(`operation complete!`);
197e41f4b71Sopenharmony_ci        }
198e41f4b71Sopenharmony_ci     });
199e41f4b71Sopenharmony_ci  }
200e41f4b71Sopenharmony_ci}
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci```
203e41f4b71Sopenharmony_ci
204