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公钥是: <Buffer 30 56 30 10 06 07 2a 86 48 ce 3d 02 01 06 05 2b 81
04 00 0a 03 42 00 04 a1 76 dd f0 fe 96 cc 28 59 a5 45 16 58 86 ca 3b 56 1e 04
ee b0 de 28 67 0a 70 ... >
私钥是: <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 e6 f0 69 2e b0 35 7d 0b 5c
ba 76 fc dc 9f 95 ae d7 ... >
示例
让我们再看一个例子。
//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公钥是: <Buffer 30 82 01 0f 30 81 bf 06 07 2a 86 48 ce 38 04 01 30 81
b3 02 49 00 9a 5c dd a3 ce 0e 8e 3e 0e ed 11 96 13 fe 1c a6 f6 35 27 0c 60 f9
51 ee dd 2c 75 12 ... >
base64 中的公钥值为:
MIIBDzCBvwYHKoZIzjgEATCBswJJAJpc3aPODo4+Du0RlhP+HKb2NScMYPlR7t0sdRJhr0JWPvtRyF
Wmn5ZAldFdDrUye5eQ+HmwgJboEWtCUm3b24CoLSQ74P1YkwIdAJs5rCSAIefaTT469xx+/8C3jS4W
jYpHci0rft8CR3Fx1wxDFdCHJBqPlR7iGxd+7nZlChABL7UqCZMaiwCJ2ijVXc5dgr3Frudu7CbaAn
RJStbqDjm5ppj4aaZV/9FmKvWVao9wA0sAAkhQtXOIWQrHde+fXoZLgPhbTBctPB1tcFztNmq2s3IO
KGfo2kFUL6eJu811SSZ1scQFLVKc5DrZIdW7t3UqzEH+xCVxNkWtGQk=
------------------------------------------------------
私钥是: <Buffer 30 81 e5 02 01 00 30 81 bf 06 07 2a 86 48 ce 38 04 01
30 81 b3 02 49 00 9a 5c dd a3 ce 0e 8e 3e 0e ed 11 96 13 fe 1c a6 f6 35 27 0c
60 f9 51 ee dd 2c ... >
base64 中的私钥是:
MIHlAgEAMIG/BgcqhkjOOAQBMIGzAkkAmlzdo84Ojj4O7RGWE/4cpvY1Jwxg+VHu3Sx1EmGvQlY++1
HIVaaflkCV0V0OtTJ7l5D4ebCAlugRa0JSbdvbgKgtJDvg/ViTAh0AmzmsJIAh59pNPjr3HH7/wLeN
LhaNikdyLSt+3wJHcXHXDEMV0IckGo+VHuIbF37udmUKEAEvtSoJkxqLAInaKNVdzl2CvcWu527sJt
oCdElK1uoOObmmmPhpplX/0WYq9ZVqj3AEHgIcJ2ON17GGE4FrtkJak337GB+bAEkb+YjulN2rug==
以上是 Node.js 中的 crypto.generateKeyPairSync() 方法 的全部内容, 来源链接: utcz.com/z/347549.html