Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
61c55f32
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
61c55f32
编写于
11月 28, 2022
作者:
O
openharmony_ci
提交者:
Gitee
11月 28, 2022
浏览文件
操作
浏览文件
下载
差异文件
!11894 【仅修改工具扫描问题】sync doc to 1018
Merge pull request !11894 from 胡玉/monthly_20221018
上级
8866e23c
589ede7a
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
1086 addition
and
699 deletion
+1086
-699
zh-cn/application-dev/reference/apis/js-apis-cryptoFramework.md
...application-dev/reference/apis/js-apis-cryptoFramework.md
+1059
-675
zh-cn/application-dev/security/cryptoFramework-guidelines.md
zh-cn/application-dev/security/cryptoFramework-guidelines.md
+17
-18
zh-cn/application-dev/security/cryptoFramework-overview.md
zh-cn/application-dev/security/cryptoFramework-overview.md
+10
-6
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-cryptoFramework.md
浏览文件 @
61c55f32
此差异已折叠。
点击以展开。
zh-cn/application-dev/security/cryptoFramework-guidelines.md
浏览文件 @
61c55f32
...
...
@@ -13,7 +13,7 @@
1.
随机生成算法库密钥对象。该对象可用于后续的加解密等操作。
2.
根据指定数据生成算法库密钥对象(也就是将外部或存储的二进制数据转换为算法库的密钥对象)。该对象可用于后续的加解密等操作。
3.
获取算法库密钥对象的二进制数据,用于存储或传输。
> **说明**:密钥对象Key包括对称密钥SymKey和非对称密钥(公钥PubKey和私钥PriKey),其中公钥和私钥组成密钥对KeyPair。密钥之间的具体关系可参考[
接口声明
](../reference/apis/js-apis-cryptoFramework.md)。
> **说明**:密钥对象Key包括对称密钥SymKey和非对称密钥(公钥PubKey和私钥PriKey),其中公钥和私钥组成密钥对KeyPair。密钥之间的具体关系可参考[
API参考
](../reference/apis/js-apis-cryptoFramework.md)。
**接口及参数说明**
...
...
@@ -100,21 +100,17 @@ function testGenerateAesKey() {
示例3:根据指定的RSA非对称密钥二进制数据,生成KeyPair对象(场景2)
1.
获取RSA
二进制密钥数据封装成DataBlob对象,按keysize(32位的密钥位数) 、nsize(32位,值为keysize/8)、 esize(32位的大数e的实际长度,单位Byte)、dsize(32位,值位keysize/8)、nval(大数n的二进制数据)、eval(大数e的二进制数据)和dval(大数d的二进制数据)拼接形成
。
2.
调用convertKey方法,传入公钥二进制和私钥二进制(二者非必选项,可只传入其中一个),转换为KeyPair对象。
1.
获取RSA
公钥或私钥二进制数据,公钥需满足ASN.1语法、X.509规范、DER编码格式,私钥需满足ASN.1语法、PKCS#8规范、DER编码格式
。
2.
创建AsyKeyGenerator对象,
调用convertKey方法,传入公钥二进制和私钥二进制(二者非必选项,可只传入其中一个),转换为KeyPair对象。
```
javascript
import
cryptoFramework
from
'
@ohos.security.cryptoFramework
'
;
function
convertAsyKey
()
{
let
rsaGenerator
=
cryptoFramework
.
createAsyKeyGenerator
(
"
RSA1024
"
);
// 公钥二进制数据
let
pkval
=
new
Uint8Array
([
0
,
4
,
0
,
0
,
128
,
0
,
0
,
0
,
3
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
182
,
22
,
137
,
81
,
111
,
129
,
17
,
47
,
33
,
97
,
67
,
85
,
251
,
53
,
127
,
42
,
130
,
150
,
93
,
144
,
129
,
104
,
14
,
73
,
110
,
189
,
138
,
82
,
53
,
74
,
114
,
86
,
24
,
186
,
143
,
65
,
87
,
110
,
237
,
69
,
206
,
207
,
5
,
81
,
24
,
32
,
41
,
160
,
209
,
125
,
162
,
92
,
0
,
148
,
49
,
241
,
235
,
0
,
71
,
198
,
1
,
28
,
136
,
106
,
152
,
22
,
25
,
249
,
77
,
241
,
57
,
149
,
154
,
44
,
200
,
6
,
0
,
83
,
246
,
63
,
162
,
106
,
242
,
131
,
80
,
227
,
143
,
162
,
210
,
28
,
127
,
136
,
123
,
172
,
26
,
247
,
2
,
194
,
16
,
1
,
100
,
122
,
180
,
251
,
57
,
22
,
69
,
133
,
232
,
145
,
107
,
66
,
80
,
201
,
151
,
46
,
114
,
175
,
116
,
57
,
45
,
170
,
188
,
77
,
86
,
230
,
111
,
45
,
1
,
0
,
1
]);
// 封装成DataBlob对象
let
pkval
=
new
Uint8Array
([
48
,
129
,
159
,
48
,
13
,
6
,
9
,
42
,
134
,
72
,
134
,
247
,
13
,
1
,
1
,
1
,
5
,
0
,
3
,
129
,
141
,
0
,
48
,
129
,
137
,
2
,
129
,
129
,
0
,
174
,
203
,
113
,
83
,
113
,
3
,
143
,
213
,
194
,
79
,
91
,
9
,
51
,
142
,
87
,
45
,
97
,
65
,
136
,
24
,
166
,
35
,
5
,
179
,
42
,
47
,
212
,
79
,
111
,
74
,
134
,
120
,
73
,
67
,
21
,
19
,
235
,
80
,
46
,
152
,
209
,
133
,
232
,
87
,
192
,
140
,
18
,
206
,
27
,
106
,
106
,
169
,
106
,
46
,
135
,
111
,
118
,
32
,
129
,
27
,
89
,
255
,
183
,
116
,
247
,
38
,
12
,
7
,
238
,
77
,
151
,
167
,
6
,
102
,
153
,
126
,
66
,
28
,
253
,
253
,
216
,
64
,
20
,
138
,
117
,
72
,
15
,
216
,
178
,
37
,
208
,
179
,
63
,
204
,
39
,
94
,
244
,
170
,
48
,
190
,
21
,
11
,
73
,
169
,
156
,
104
,
193
,
3
,
17
,
100
,
28
,
60
,
50
,
92
,
235
,
218
,
57
,
73
,
119
,
19
,
101
,
164
,
192
,
161
,
197
,
106
,
105
,
73
,
2
,
3
,
1
,
0
,
1
]);
let
pkBlob
=
{
data
:
pkval
};
// 调用密钥转换函数
let
convertKeyPromise
=
rsaGenerator
.
convertKey
(
pkBlob
,
null
);
convertKeyPromise
.
then
(
keyPair
=>
{
rsaGenerator
.
convertKey
(
pkBlob
,
null
,
function
(
err
,
keyPair
)
{
if
(
keyPair
==
null
)
{
AlertDialog
.
show
({
message
:
"
Convert keypair fail
"
});
}
...
...
@@ -125,10 +121,7 @@ function convertAsyKey() {
**说明**
1.
nsize和dsize为密钥位数/8,esize为具体的实际长度。
2.
私钥材料需要包含keysize,nsize,esize,dsize,nval,eval,dval的全部数据,公钥材料中dsize设置为为0,缺省dval的数据。
3.
公钥和私钥二进制数据为可选项,可单独传入公钥或私钥的数据,生成对应只包含公钥或私钥的KeyPair对象。
4.
keysize、nsize、esize和dsize为32位二进制数据,数据的大小端格式请按设备CPU默认格式,密钥材料(nval、eval、dval)统一为大端格式。
当前convertKey操作,公钥只支持转换满足X.509规范的DER格式,私钥只支持PKCS#8规范的DER格式;
示例4:根据指定的ECC非对称密钥二进制数据,生成KeyPair对象(场景2、3)
...
...
@@ -269,14 +262,14 @@ function stringToUint8Array(str) {
return
new
Uint8Array
(
arr
);
}
// 字节流
转成可理解的字符串
// 字节流
以16进制输出
function
uint8ArrayToShowStr
(
uint8Array
)
{
return
Array
.
prototype
.
map
.
call
(
uint8Array
,
(
x
)
=>
(
'
00
'
+
x
.
toString
(
16
)).
slice
(
-
2
))
.
join
(
''
);
}
// 字节流
以16进制输出
// 字节流
转成可理解的字符串
function
uint8ArrayToString
(
array
)
{
let
arrayString
=
''
;
for
(
let
i
=
0
;
i
<
array
.
length
;
i
++
)
{
...
...
@@ -388,14 +381,14 @@ function stringToUint8Array(str) {
return
new
Uint8Array
(
arr
);
}
// 字节流
转成可理解的字符串
// 字节流
以16进制输出
function
uint8ArrayToShowStr
(
uint8Array
)
{
return
Array
.
prototype
.
map
.
call
(
uint8Array
,
(
x
)
=>
(
'
00
'
+
x
.
toString
(
16
)).
slice
(
-
2
))
.
join
(
''
);
}
// 字节流
以16进制输出
// 字节流
转成可理解的字符串
function
uint8ArrayToString
(
array
)
{
let
arrayString
=
''
;
for
(
let
i
=
0
;
i
<
array
.
length
;
i
++
)
{
...
...
@@ -545,6 +538,12 @@ function encryptMessageCallback() {
}
```
**说明**
1.
使用RSA加解密时,Cipher对象不可重复调用init方法初始化,在创建了一个加密Cipher对象后,如果要进行解密,则需要重新创建另一个Cipher对象执行解密操作。
2.
RSA加密有长度限制,允许加密明文的最大长度见
[
加解密算法库框架概述
](
cryptoFramework-overview.md
)
中的基本概念章节。
3.
RSA解密每次允许解密的密文长度为,RSA密钥的位数/8。
## 使用签名验签操作
**场景说明**
...
...
@@ -923,7 +922,7 @@ Mac(message authentication code)可以对消息进行完整性校验,通过使
| 实例名 | 接口名 | 描述 |
| --------------- | ------------------------------------------------------------ | --------------------------------------------------- |
| cryptoFramework | function createM
d(algName : string) : Md;
| 指定摘要算法,生成消息认证码实例Mac |
| cryptoFramework | function createM
ac(algName : string) : Mac;
| 指定摘要算法,生成消息认证码实例Mac |
| Mac | init(key : SymKey, callback : AsyncCallback
\<
void
\>
) : void; | 接收输入对称密钥,通过Callback的方式,异步初始化MAC |
| Mac | init(key : SymKey) : Promise
\<
void
\>
; | 接收输入对称密钥,通过Promise的方式,异步初始化MAC |
| Mac | update(input : DataBlob, callback : AsyncCallback
\<
void
\>
) : void; | 接受输入数据,通过Callback的方式,异步更新MAC |
...
...
zh-cn/application-dev/security/cryptoFramework-overview.md
浏览文件 @
61c55f32
...
...
@@ -36,7 +36,7 @@
-
PKCS5:填充字符由一个字节序列组成,每个字节填充该填充字节序列的长度,规定是8字节填充;
-
PKCS7:填充字符和PKCS5填充方法一致,但是可以在1-255字节之间任意填充;
> **说明:** ECB、CBC加密模式,明文长度不是128位整数倍,必须使用填充方法补足
;
> **说明:** ECB、CBC加密模式,明文长度不是128位整数倍,必须使用填充方法补足
。<br/>由于需要填充至分组大小,所以实际算法库中的PKCS5和PKCS7都是以分组大小作为填充长度的,即AES加密填充至16字节。
-
**对称3DES加解密**
该算法的加解密过程分别是对明文/密文数据进行三次DES加密或解密,得到相应的密文或明文。
...
...
@@ -46,7 +46,7 @@
-
PKCS5:填充字符由一个字节序列组成,每个字节填充该填充字节序列的长度,规定是8字节填充;
-
PKCS7:填充字符和PKCS5填充方法一致,但是可以在1-255字节之间任意填充;
> **说明:** ECB、CBC加密模式,明文长度不是64位整数倍,必须使用填充方法补足
> **说明:** ECB、CBC加密模式,明文长度不是64位整数倍,必须使用填充方法补足
。<br/>由于需要填充至分组大小,所以实际算法库中的PKCS5和PKCS7都是以分组大小作为填充长度的,即3DES加密填充至8字节。
-
**非对称RSA加解密**
...
...
@@ -116,19 +116,21 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息
支持的对称密钥生成参数:
|对称密钥算法|密钥长度
|生成密钥的
字符串参数|
|对称密钥算法|密钥长度
(bit)|
字符串参数|
|---|---|---|
|3DES|192|3DES192|
|AES|128|AES128|
|AES|192|AES192|
|AES|256|AES256|
> **说明**:“字符串参数”是“对称密钥算法”和“密钥长度”拼接而成,用于在创建对称密钥生成器时,指定密钥规格。
**非对称密钥生成规格**
-
**RSA密钥生成**
支持的非对称密钥生成参数:
|非对称密钥算法|密钥长度
|素数个数|生成密钥的
字符串参数|
|非对称密钥算法|密钥长度
(bit)|素数个数|
字符串参数|
|---|---|---|---|
|RSA|512|2|RSA512
\|
PRIMES_2|
|RSA|768|2|RSA768
\|
PRIMES_2|
...
...
@@ -165,7 +167,7 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息
支持的对称加密算法:
|对称加解密算法|分组模式|
指定算法名称字符串
|
|对称加解密算法|分组模式|
字符串参数
|
|---|---|---|
|3DES|ECB|3DES192
\|
ECB
\|
[NoPadding
\|
PKCS5
\|
PKCS7]|
|3DES|CBC|3DES192
\|
CBC
\|
[NoPadding
\|
PKCS5
\|
PKCS7]|
...
...
@@ -179,7 +181,9 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息
|AES|GCM|AES[128
\|
192
\|
256]
\|
GCM
\|
[NoPadding
\|
PKCS5
\|
PKCS7]|
|AES|CCM|AES[128
\|
192
\|
256]
\|
CCM
\|
[NoPadding
\|
PKCS5
\|
PKCS7]|
> **说明:** []中只能任选一项
> **说明:**
> 1. []中只能任选一项。
> 2. “字符串参数”是“对称加解密算法(含密钥长度)”、“分组模式”、“填充模式”拼接而成,用于在创建对称加解密实例时,指定对称加解密算法规格。
**非对称RSA加解密**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录