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 – প্রাইভেট কী-এর ভ্যালু ধারণ করে।
উদাহরণ ১
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:
উদাহরণ ২
আরেকটি উদাহরণ দেখি।
// 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