crypto.generateKeyPair(type, options, callback)
| 版本 | 变化 | 
|---|---|
| v18.0.0 | 将无效回调传递给   | 
| v16.10.0 | 添加为RSA-PSS  key 对定义  | 
| v13.9.0、v12.17.0 | 添加对Diffie-Hellman 的支持。  | 
| v12.0.0 | 添加对RSA-PSS key 对的支持。  | 
| v12.0.0 | 添加生成 X25519 和 X448 key 对的函数。  | 
| v12.0.0 | 添加生成 Ed25519 和 Ed448 key 对的函数。  | 
| v11.6.0 | 如果未指定编码,  | 
| v10.12.0 | 添加于:v10.12.0  | 
参数
type: <string> 必须是'rsa','rsa-pss','dsa','ec','ed25519','ed448','x25519','x448', 或'dh'.options:<Object>modulusLength: <number> key 大小(以位为单位)(RSA、DSA)。publicExponent: <number> 公共 index (RSA)。 默认:0x10001。hashAlgorithm: <string> 消息摘要的名称 (RSA-PSS)。mgf1HashAlgorithm: <string> MGF1 使用的消息摘要的名称 (RSA-PSS)。saltLength: <number> 以字节为单位的最小盐长度 (RSA-PSS)。divisorLength: <number>q的大小(以位 (DSA) 为单位)。namedCurve: <string> 要使用的曲线的名称 (EC)。prime: <Buffer> 主要参数 (DH)。primeLength: <number> 以比特为单位的素数长度 (DH)。generator: <number> 自定义生成器 (DH)。 默认:2。groupName: <string> Diffie-Hellman 组名 (DH)。请参阅。crypto.getDiffieHellman()publicKeyEncoding: <Object> 参见。keyObject.export()privateKeyEncoding: <Object> 参见。keyObject.export()
callback:<Function>err: <Error>publicKey: <string> | <Buffer> | <KeyObject>privateKey: <string> | <Buffer> | <KeyObject>
生成给定 type 的新非对称 key 对。目前支持 RSA、RSA-PSS、DSA、EC、Ed25519、Ed448、X25519、X448 和 DH。
如果指定了 publicKeyEncoding 或 privateKeyEncoding,则此函数的行为就像在其结果上调用了  。否则, key 的相应部分将作为 keyObject.export()   返回。KeyObject 
建议将公钥编码为'spki',将私钥编码为'pkcs8',并对long-term 存储进行加密:
const { generateKeyPair } = await import('node:crypto'); generateKeyPair('rsa', { modulusLength: 4096, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem', cipher: 'aes-256-cbc', passphrase: 'top secret' } }, (err, publicKey, privateKey) => { // Handle errors and use the generated key pair. });const { generateKeyPair, } = require('node:crypto'); generateKeyPair('rsa', { modulusLength: 4096, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem', cipher: 'aes-256-cbc', passphrase: 'top secret' } }, (err, publicKey, privateKey) => { // Handle errors and use the generated key pair. });
完成后,将调用 callback,并将 err 设置为 undefined 和 publicKey /privateKey 表示生成的 key 对。
如果此方法作为其   ed 版本调用,它会为具有 util.promisify() publicKey 和 privateKey 属性的 Object 返回 Promise。
相关用法
- Node.js crypto.generateKeyPair()用法及代码示例
 - Node.js crypto.generateKeyPairSync(type, options)用法及代码示例
 - Node.js crypto.generateKeyPairSync()用法及代码示例
 - Node.js crypto.generateKeySync(type, options)用法及代码示例
 - Node.js crypto.generateKey(type, options, callback)用法及代码示例
 - Node.js crypto.getCurves()用法及代码示例
 - Node.js crypto.getHashes()用法及代码示例
 - Node.js crypto.getDiffieHellman(groupName)用法及代码示例
 - Node.js crypto.getCiphers()用法及代码示例
 - Node.js crypto.getDiffieHellman()用法及代码示例
 - Node.js crypto.randomFill()用法及代码示例
 - Node.js crypto.createHmac()用法及代码示例
 - Node.js crypto.randomFillSync(buffer[, offset][, size])用法及代码示例
 - Node.js crypto.constants用法及代码示例
 - Node.js crypto.randomInt([min, ]max[, callback])用法及代码示例
 - Node.js crypto.publicEncrypt()用法及代码示例
 - Node.js crypto.publicDecrypt()用法及代码示例
 - Node.js crypto.pbkdf2Sync(password, salt, iterations, keylen, digest)用法及代码示例
 - Node.js crypto.createHash()用法及代码示例
 - Node.js crypto.hkdfSync()用法及代码示例
 - Node.js crypto.randomFillSync()用法及代码示例
 - Node.js crypto.checkPrime()用法及代码示例
 - Node.js crypto.sign()用法及代码示例
 - Node.js crypto.webcrypto用法及代码示例
 - Node.js crypto.createCipheriv()用法及代码示例
 
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 crypto.generateKeyPair(type, options, callback)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
