SubtleCrypto.generateKey()
åºçº¿
广æ³å¯ç¨
*
èª 2020å¹´1æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
å®å ¨ä¸ä¸æ: æ¤ç¹æ§ä» å¨ä¸äºæ¯æçæµè§å¨çå®å ¨ä¸ä¸æï¼HTTPSï¼ä¸å¯ç¨ã
SubtleCrypto æ¥å£ç generateKey() æ¹æ³ç¨äºçææ°çå¯é¥ï¼ç¨äºå¯¹ç§°å å¯ç®æ³ï¼æå¯é¥å¯¹ï¼ç¨äºé对称å å¯ç®æ³ï¼ã
è¯æ³
generateKey(algorithm, extractable, keyUsages)
åæ°
algorithm-
ä¸ä¸ªå¯¹è±¡ï¼ç¨äºå®ä¹è¦çæçç®æ³ç±»åï¼å¹¶æä¾æéçåæ°ã
- å¯¹äº RSASSA-PKCS1-v1_5ãRSA-PSS æ RSA-OAEP ç®æ³ï¼ä¼ é
RsaHashedKeyGenParams对象ã - å¯¹äº ECDSA æ ECDH ç®æ³ï¼ä¼ é
EcKeyGenParams对象ã - å¯¹äº HMAC ç®æ³ï¼ä¼ é
HmacKeyGenParams对象ã - å¯¹äº AES-CTRãAES-CBCãAES-GCM æ AES-KW ç®æ³ï¼ä¼ é
AesKeyGenParams对象ã
- å¯¹äº RSASSA-PKCS1-v1_5ãRSA-PSS æ RSA-OAEP ç®æ³ï¼ä¼ é
extractable-
ä¸ä¸ªå¸å°å¼ï¼è¡¨ç¤ºçæçå¯é¥æ¯å¦å¯è¢«
SubtleCrypto.exportKey()åSubtleCrypto.wrapKey()æ¹æ³å¯¼åºã keyUsages-
ä¸ä¸ªæ°ç»ï¼è¡¨ç¤ºçæåºæ¥çå¯é¥å¯è¢«ç¨äºåä»ä¹ï¼æ°ç»å ç´ å¯è½ç弿ï¼
encryptï¼å¯é¥å¯ç¨äºå 坿¶æ¯ãdecryptï¼å¯é¥å¯ç¨äºè§£å¯æ¶æ¯ãsignï¼å¯é¥å¯ç¨äºå¯¹æ¶æ¯è¿è¡ç¾åãverifyï¼å¯é¥å¯ç¨äºéªè¯ç¾åãderiveKeyï¼å¯é¥å¯ç¨äºæ´¾çæ°çå¯é¥ãderiveBitsï¼å¯é¥å¯ç¨äºæ´¾çæ¯ç¹åºåãwrapKeyï¼å¯é¥å¯ç¨äºå è£ ä¸ä¸ªå¯é¥ãunwrapKeyï¼å¯é¥å¯ç¨äºè§£å¼ä¸ä¸ªå¯é¥çå è£ ã
è¿åå¼
ä¸ä¸ª Promiseï¼ä¼å
ç°ä¸º CryptoKeyï¼ç¨äºå¯¹ç§°å å¯ç®æ³ï¼æ CryptoKeyPairï¼ç¨äºé对称å å¯ç®æ³ï¼ã
å¼å¸¸
å½åç以ä¸å ç§å¼å¸¸æ¶ï¼promise ä¼è¢«æç»ï¼
SyntaxErrorDOMException-
å½ç»ææ¯ç±»å为
secretæprivateçå å¯å¯é¥ï¼ä½keyUsagesåæ°ä¸ºç©ºæ¶è§¦åã SyntaxErrorDOMException-
å½ç»ææ¯å å¯å¯é¥å¯¹ï¼ä½å®ç
privateKey.usages屿§ä¸ºç©ºæ¶è§¦åã
示ä¾
夿³¨ï¼ä½ å¯ä»¥å¨ Github ä¸å°è¯å¯ç¨ç示ä¾ã
çæ RSA å¯é¥å¯¹
以ä¸ä»£ç çæ RSA-OAEP å å¯å¯é¥å¯¹ãå¨ GitHub 䏿¥ç宿´ä»£ç ã
let keyPair = await window.crypto.subtle.generateKey(
{
name: "RSA-OAEP",
modulusLength: 4096,
publicExponent: new Uint8Array([1, 0, 1]),
hash: "SHA-256",
},
true,
["encrypt", "decrypt"],
);
çææ¤åæ²çº¿å¯é¥å¯¹
以ä¸ä»£ç çæ ECDSA ç¾åå¯é¥å¯¹ãå¨ GitHub 䏿¥ç宿´ä»£ç ã
let keyPair = await window.crypto.subtle.generateKey(
{
name: "ECDSA",
namedCurve: "P-384",
},
true,
["sign", "verify"],
);
çæ HMAC å¯é¥
以ä¸ä»£ç çæ HMAC ç¾åå¯é¥ãå¨ GitHub 䏿¥ç宿´ä»£ç ã
let key = await window.crypto.subtle.generateKey(
{
name: "HMAC",
hash: { name: "SHA-512" },
},
true,
["sign", "verify"],
);
çæ AES å¯é¥
以ä¸ä»£ç çæ AES-GCM å å¯å¯é¥ãå¨ GitHub 䏿¥ç宿´ä»£ç ã
let key = await window.crypto.subtle.generateKey(
{
name: "AES-GCM",
length: 256,
},
true,
["encrypt", "decrypt"],
);
è§è
| è§è |
|---|
| Web Cryptography Level 2 > # SubtleCrypto-method-generateKey > |