Node.js 中的 crypto.generateKeyPairSync() 方法
所述可用于产生在一个同步流的新的非对称密钥对中的指定类型。支持生成密钥对的类型有:RSA、DSA、EC、Ed25519、Ed448、X25519、X448和DH。当指定了publicKeyEncoding或privateKeyEncoding时,该函数的行为就像在其结果上被调用一样,否则返回keyObject的相应部分。建议的公钥类型是“spki”,私钥是“pkcs8”。crypto.generateKeyPairSync()keyObject.export
语法
crypto.generateKeyPairSync(type, options)
参数
上述参数描述如下-
type -它保存需要为其生成密钥的字符串类型。支持的类型有-RSA、DSA、EC、Ed25519、Ed448、X25519、X448和DH。
选项 -它可以保存以下参数-
模数长度 -这保存了类型(RSA、DSA)的密钥大小(以位为单位)。
publicExponent–保存RSA算法的公共指数值。
默认值为–0x10001
divisorLength –这以位为单位保存q的大小。
namedCurve –这将保存要使用的曲线的名称。
prime–这将保存DH等类型的素数参数。
PrimeLength –这将保存以位为单位的素数长度。
generator –此参数保存自定义生成器值,默认值:2。
groupName –这是DH算法的差异赫尔曼组名称。
publicKeyEncoding –这将保存公钥编码的字符串值。
privateKeyEncoding-这将保存私钥编码的字符串值。
示例
创建一个具有名称的文件-generateKeyPairSync.js并复制以下代码片段。创建文件后,使用以下命令运行此代码,如下例所示-
node generateKeyPairSync.js
生成密钥对同步.js
//Node.jsprogram演示了crypto.generateKeyPair()方法的流程 //从加密模块导入generateKeyPairSync const { generateKeyPairSync } = require('crypto'); //在同步过程中获取publicKye和privateKey的值 const { publicKey, privateKey } = generateKeyPairSync('ec', { namedCurve: 'secp256k1', //实施选项 publicKeyEncoding: { type: 'spki', format: 'der' }, privateKeyEncoding: { type: 'pkcs8', format: 'der' } }); //在同步过程中打印非对称密钥对 console.log("公钥是: ", publicKey); console.log(); console.log("私钥是: ", privateKey);输出结果
C:\home\node>> node generateKeyPairSync.js 公钥是:私钥是:
示例
让我们再看一个例子。
//Node.jsprogram演示了crypto.generateKeyPair()方法的流程 //从加密模块导入generateKeyPairSync const { generateKeyPairSync } = require('crypto'); //在同步过程中获取publicKye和privateKey的值 const { publicKey, privateKey } = generateKeyPairSync('dsa', { modulusLength: 570, //实施选项 publicKeyEncoding: { type: 'spki', format: 'der' }, privateKeyEncoding: { type: 'pkcs8', format: 'der' } }); //编码后打印非对称密钥对 console.log("公钥是: ", publicKey) console.log("base64中的公钥值为: ", publicKey.toString('base64')); console.log("------------------------------------------------------") console.log("私钥是: ", privateKey) console.log("base64中的私钥是: ", privateKey.toString('base64'));输出结果
C:\home\node>> node generateKeyPairSync.js 公钥是:base64中的公钥值为: MIIBDzCBvwYHKoZIzjgEATCBswJJAJpc3aPODo4+Du0RlhP+HKb2NScMYPlR7t0sdRJhr0JWPvtRyF Wmn5ZAldFdDrUye5eQ+HmwgJboEWtCUm3b24CoLSQ74P1YkwIdAJs5rCSAIefaTT469xx+/8C3jS4W jYpHci0rft8CR3Fx1wxDFdCHJBqPlR7iGxd+7nZlChABL7UqCZMaiwCJ2ijVXc5dgr3Frudu7CbaAn RJStbqDjm5ppj4aaZV/9FmKvWVao9wA0sAAkhQtXOIWQrHde+fXoZLgPhbTBctPB1tcFztNmq2s3IO KGfo2kFUL6eJu811SSZ1scQFLVKc5DrZIdW7t3UqzEH+xCVxNkWtGQk= ------------------------------------------------------ 私钥是: base64中的私钥是: MIHlAgEAMIG/BgcqhkjOOAQBMIGzAkkAmlzdo84Ojj4O7RGWE/4cpvY1Jwxg+VHu3Sx1EmGvQlY++1 HIVaaflkCV0V0OtTJ7l5D4ebCAlugRa0JSbdvbgKgtJDvg/ViTAh0AmzmsJIAh59pNPjr3HH7/wLeN LhaNikdyLSt+3wJHcXHXDEMV0IckGo+VHuIbF37udmUKEAEvtSoJkxqLAInaKNVdzl2CvcWu527sJt oCdElK1uoOObmmmPhpplX/0WYq9ZVqj3AEHgIcJ2ON17GGE4FrtkJak337GB+bAEkb+YjulN2rug==