crypto.generateKeyPairSync()方法是加密模块的内置应用程序编程接口,用于生成指定类型的新非对称 key 对。例如,当前支持的 key 类型是RSA,DSA,EC,Ed25519,Ed448,X25519,X448和DH。此外,如果在此说明了选项的publicKeyEncoding或privateKeyEncoding,则此函数的作用就好像在其输出上调用了keyObject.export()一样。否则,键的特定部分将作为KeyObject返回。但是,建议使用强密码短语将公用 key 编码为“ spki”,将私钥编码为“ pkcs8”,以保持密码短语的机密性。
用法:
crypto.generateKeyPairSync( type, options )
参数:该方法接受上述和以下所述的两个参数:
- type:它包含一个字符串,并且必须包含以下一种或多种算法:“ rsa”,“ dsa”,“ ec”,“ ed25519”,“ ed448”,“ x25519”,“ x448”或“ dh”。
- options:它是对象类型。它可以包含以下参数:
- modulusLength:它包含一个数字。它是以位为单位的 key 大小,仅适用于RSA和DSA算法。
- publicExponent:它包含一个数字。它是RSA算法的公有 index 。默认情况下,其值为0x10001。
- divisorLength:它包含一个数字。它是DSA算法中q的大小(以位为单位)。
- namedCurve:它包含一个字符串。它是EC算法中要使用的曲线的名称。
- prime:它拥有一个缓冲区。它是DH算法的主要参数。
- primeLength:它包含一个数字。它是DH算法的素数长度(以位为单位)。
- generator:它包含一个数字。它是DH算法的自定义生成器。其默认值为2。
- groupName:它保存字符串。这是DH算法的Diffie-Hellman组名。
- publicKeyEncoding:它包含一个字符串。
- privateKeyEncoding:它拥有一个对象。
返回值:它返回给定类型的新的非对称 key 对,即,它返回一个对象,该对象包括一个私钥和一个保存字符串,缓冲区和KeyObject的公钥。
以下示例说明了Node.js中crypto.generateKeyPairSync()方法的使用:
范例1:
// Node.js program to demonstrate the
// crypto.generateKeyPairSync() method
// Including generateKeyPairSync from crypto module
const { generateKeyPairSync } = require('crypto');
// Including publicKey and privateKey from
// generateKeyPairSync() method with its
// parameters
const { publicKey, privateKey } = generateKeyPairSync('ec', {
namedCurve:'secp256k1', // Options
publicKeyEncoding:{
type:'spki',
format:'der'
},
privateKeyEncoding:{
type:'pkcs8',
format:'der'
}
});
// Prints asymmetric key pair
console.log("The public key is:", publicKey);
console.log();
console.log("The private key is:", privateKey);
输出:
The public key is:<Buffer 30 56 30 10 06 07 2a 86 48 ce 3d 02 01 06 052b 81 04 00 0a 03 42 00 04 d9 88 53 5b 21 84 f8 73 14 c8 0b 31 e2 2a 28 a5 4c 8f 68 23 65 84 d9 fe 20 3f ... > The private key is: Buffer 30 81 84 02 01 00 30 10 06 07 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 0a 04 6d 30 6b 02 01 01 04 20 50 4a 87 c3 8c 968f 2b 41 f8 66 99 8a 95 ae 45 75 ... >
范例2:
// Node.js program to demonstrate the
// crypto.generateKeyPairSync() method
// Including generateKeyPairSync from crypto module
const { generateKeyPairSync } = require('crypto');
// Including publicKey and privateKey from
// generateKeyPairSync() method with its
// parameters
const { publicKey, privateKey } = generateKeyPairSync('dsa', {
modulusLength:570,
publicKeyEncoding:{
type:'spki',
format:'der'
},
privateKeyEncoding:{
type:'pkcs8',
format:'der'
}
});
// Prints asymmetric key pair after encoding
console.log("The public key is:",
publicKey.toString('base64'));
console.log();
console.log("The private key is:",
privateKey.toString('base64'));
输出:
The public key is: MIIBETCBwAYHKoZIzjgEATCBtAJJAM6084jk1Y6s/0sWQCs3k59AjV1GgAHb8gmB+Lxd/YVid+GySyss8tqhVQl49xho1DHoeJMNsVO6mcRqaSlSCPgmzqGaOvn2mQIdAKL5nGKJjDZF8Pb1SVvwWivhPShJiiHC2JjgrN8CSAqhzmg26/kEHYTZ3yNEGuguDhLvMAPdVG9pjTahLBytn8JQa3yQwLuPB4MzKfJ4d0pvKVZVnkMsatUe2ZkjnKoCjGlzwggd+QNMAAJJAMvsOBUjUKLhpkw4FZP7LIz0yYyOV1yYy84t8qSO42Yf6sNUfK6INnkFbpLHjFLcaDkFPqE5oRCIUqIVOhH0I7jNcGCN2m+ZWg== The private key is: MIHnAgEAMIHABgcqhkjOOAQBMIG0AkkAzrTziOTVjqz/SxZAKzeTn0CNXUaAAdvyCYH4vF39hWJ34bJLKyzy2qFVCXj3GGjUMeh4kw2xU7qZxGppKVII+CbOoZo6+faZAh0AovmcYomMNkXw9vVJW/BaK+E9KEmKIcLYmOCs3wJICqHOaDbr+QQdhNnfI0Qa6C4OEu8wA91Ub2mNNqEsHK2fwlBrfJDAu48HgzMp8nh3Sm8pVlWeQyxq1R7ZmSOcqgKMaXPCCB35BB8CHQChh8yXsr/3dx3OdV6JmIWPcHe6dTHh6IOEIHer
在此,使用“ dsa”键类型。
参考: https://nodejs.org/api/crypto.html#crypto_crypto_generatekeypairsync_type_options
相关用法
- Node.js GM drawCircle()用法及代码示例
- Node.js GM drawBezier()用法及代码示例
- Node.js GM drawPolyline()用法及代码示例
- Node.js GM drawArc()用法及代码示例
- Node.js GM drawEllipse()用法及代码示例
- Node.js GM monochrome()用法及代码示例
- Node.js GM equalize()用法及代码示例
- Node.js GM enhance()用法及代码示例
- Node.js GM drawPolygon()用法及代码示例
- Node.js GM whitePoint()用法及代码示例
注:本文由纯净天空筛选整理自nidhi1352singh大神的英文原创作品 Node.js | crypto.generateKeyPairSync() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。