Node.js में crypto.generateKeyPair() मेथड का उपयोग निर्दिष्ट प्रकार के नए असममित की जोड़ी (asymmetric key pair) को जेनरेट करने के लिए किया जाता है। की जोड़ी जेनरेट करने के लिए समर्थित प्रकार हैं: RSA, DSA, EC, Ed25519, Ed448, X25519, X448 और DH। जब publicKeyEncoding या privateKeyEncoding निर्दिष्ट किया जाता है, तो फंक्शन ऐसा व्यवहार करता है जैसे इसके परिणाम पर keyObject.export कॉल किया गया हो, अन्यथा keyObject का संबंधित भाग वापस कर दिया जाता है।
सिंटैक्स
crypto.generateKeyPair(type, options, callback)
पैरामीटर्स
उपरोक्त पैरामीटर्स का विवरण नीचे दिया गया है:
type – यह उस स्ट्रिंग प्रकार को रखता है जिसके लिए कीज़ जेनरेट की जानी हैं। समर्थित प्रकार हैं: RSA, DSA, EC, Ed25519, Ed448, X25519, X448 और DH।
options – इसमें निम्नलिखित पैरामीटर्स हो सकते हैं:
modulusLength – यह RSA, DSA प्रकार के लिए बिट्स में की साइज़ रखता है।
publicExponent – यह RSA एल्गोरिदम के लिए पब्लिक एक्सपोनेंट मान रखता है। डिफ़ॉल्ट मान: 0x10001
divisorLength – यह q के आकार को बिट्स में रखता है।
namedCurve – यह उपयोग किए जाने वाले कर्व का नाम रखता है।
prime – यह DH जैसे प्रकारों के लिए प्राइम पैरामीटर रखता है।
primeLength – यह बिट्स में प्राइम लंबाई रखता है।
generator – यह कस्टम जनरेटर मान रखता है, डिफ़ॉल्ट: 2।
groupName – यह DH एल्गोरिदम के लिए डिफी-हेलमैन ग्रुप नाम है।
publicKeyEncoding – यह पब्लिक की एन्कोडिंग के लिए स्ट्रिंग मान रखता है।
privateKeyEncoding – यह प्राइवेट की एन्कोडिंग के लिए स्ट्रिंग मान रखता है।
callback – कॉलबैक में निम्नलिखित पैरामीटर्स होते हैं:
err – यह त्रुटि का प्रकार रखता है।
publicKey – यह पब्लिक की का मान रखता है।
privateKey – यह प्राइवेट की का मान रखता है।
उदाहरण 1: RSA एल्गोरिदम के साथ असिंक्रोनस की जेनरेशन
generateKeyPair.js नाम से एक फाइल बनाएं और नीचे दिया गया कोड स्निपेट कॉपी करें। फाइल बनाने के बाद, नीचे दिखाए अनुसार कोड चलाने के लिए निम्न कमांड का उपयोग करें:
node generateKeyPair.js
generateKeyPair.js
// Node.js प्रोग्राम crypto.generateKeyPair() मेथड का प्रदर्शन करने के लिए
// crypto मॉड्यूल से generateKeyPair इम्पोर्ट करना
const { generateKeyPair } = require('crypto');
// नीचे दिए गए पैरामीटर्स के साथ generateKeyPair() मेथड कॉल करना
generateKeyPair('rsa', {
modulusLength: 530, // ऑप्शन्स
publicExponent: 0x10101,
publicKeyEncoding: {
type: 'pkcs1',
format: 'der'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'der',
cipher: 'aes-192-cbc',
passphrase: 'Welcome to TutorialsPoint!'
}
}, (err, publicKey, privateKey) => { // कॉलबैक फंक्शन
if (!err) {
// यह असममित की जोड़ी प्रिंट करेगा
console.log("Public Key is: ", publicKey);
console.log();
console.log("Private Key is: ", privateKey);
} else {
// यदि कोई त्रुटि हो तो प्रिंट करता है
console.log("Error is: ", err);
}
});
आउटपुट
C:\home\node>> node generateKeyPair.js Public Key is:Private Key is:
उदाहरण 2: EC कर्व के साथ असिंक्रोनस की जेनरेशन
आइए एक और उदाहरण देखते हैं।
// Node.js प्रोग्राम crypto.generateKeyPair() मेथड का प्रदर्शन करने के लिए
// crypto मॉड्यूल से generateKeyPair इम्पोर्ट करना
const { generateKeyPair } = require('crypto');
// नीचे दिए गए पैरामीटर्स के साथ generateKeyPair() मेथड कॉल करना
generateKeyPair('ec', {
namedCurve: 'secp256k1', // ऑप्शन्स
publicKeyEncoding: {
type: 'spki',
format: 'der'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'der'
}
}, (err, publicKey, privateKey) => { // कॉलबैक फंक्शन
if (!err) {
// यह असममित की जोड़ी प्रिंट करेगा
console.log("Public Key is: ", publicKey);
console.log("Public Key in hex is: ", publicKey.toString('hex'));
console.log();
console.log("Private Key is: ", privateKey);
console.log("Private Key in hex is: ", privateKey.toString('hex'));
} else {
// यदि कोई त्रुटि हो तो प्रिंट करता है
console.log("Error is: ", err);
}
});
आउटपुट
C:\home\node>> node generateKeyPair.js Public Key is:Public Key in hex is: 3056301006072a8648ce3d020106052b8104000a03420004d1d00b7ef7e33ecfd8082a20a85e52 beca562942c36b9fd3157cf98b03b41ecc4b4e13b4cd5cd35814383ee76afabaf794faf6f31bc8 c9f7007748f74767677c Private Key is: Private Key in hex is: 308184020100301006072a8648ce3d020106052b8104000a046d306b02010104200501a1d580f7 65566fa33a05d36dec82ad590ff8697d182ddca6b881acfbadd1a14403420004d1d00b7ef7e33e cfd8082a20a85e52beca562942c36b9fd3157cf98b03b41ecc4b4e13b4cd5cd35814383ee76afa baf794faf6f31bc8c9f7007748f74767677c