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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。