type
: {string} Must be 'rsa'
, 'dsa'
, 'ec'
, 'ed25519'
, 'ed448'
,
'x25519'
, 'x448'
, or 'dh'
.options
: {Object}modulusLength
: {number} Key size in bits (RSA, DSA).publicExponent
: {number} Public exponent (RSA). Default: 0x10001
.divisorLength
: {number} Size of q
in bits (DSA).namedCurve
: {string} Name of the curve to use (EC).prime
: {Buffer} The prime parameter (DH).primeLength
: {number} Prime length in bits (DH).generator
: {number} Custom generator (DH). Default: 2
.groupName
: {string} Diffie-Hellman group name (DH). See
[crypto.getDiffieHellman()
][].publicKeyEncoding
: {Object} See [keyObject.export()
][].privateKeyEncoding
: {Object} See [keyObject.export()
][].callback
: {Function}err
: {Error}publicKey
: {string | Buffer | KeyObject}privateKey
: {string | Buffer | KeyObject}Generates a new asymmetric key pair of the given type
. RSA, DSA, EC, Ed25519,
Ed448, X25519, X448, and DH are currently supported.
If a publicKeyEncoding
or privateKeyEncoding
was specified, this function
behaves as if [keyObject.export()
][] had been called on its result. Otherwise,
the respective part of the key is returned as a [KeyObject
][].
It is recommended to encode public keys as 'spki'
and private keys as
'pkcs8'
with encryption for long-term storage:
const { generateKeyPair } = require('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.
},
);
On completion, callback
will be called with err
set to undefined
and
publicKey
/ privateKey
representing the generated key pair.
If this method is invoked as its [util.promisify()
][]ed version, it returns
a Promise
for an Object
with publicKey
and privateKey
properties.
Was this page helpful?
很高兴听到! 请告诉我们,我们如何才能改善.
很遗憾听到这个消息。 请告诉我们,我们如何才能改善.