কম্পিউটার টিউটোরিয়াল

Node.js-এ crypto.generateKeyPairSync() মেথড

Node.js-এ crypto.generateKeyPairSync() মেথডটি নির্দিষ্ট টাইপের একটি নতুন অ্যাসিমেট্রিক কী জোড়া (asymmetric key pair) সিঙ্ক্রোনাস ফ্লোতে তৈরি করতে ব্যবহৃত হয়। কী জোড়া তৈরি করার জন্য সমর্থিত টাইপগুলো হলো: RSA, DSA, EC, Ed25519, Ed448, X25519, X448 এবং DH।

যখন publicKeyEncoding বা privateKeyEncoding নির্দিষ্ট করা থাকে, তখন ফাংশনটি আচরণ করে যেন এর ফলাফলে keyObject.export কল করা হয়েছে, অন্যথায় সংশ্লিষ্ট keyObject অংশটি ফেরত দেওয়া হয়। পাবলিক কী-র জন্য প্রস্তাবিত টাইপ হলো 'spki' এবং প্রাইভেট কী-র জন্য 'pkcs8'।

সিনট্যাক্স

crypto.generateKeyPairSync(type, options)

প্যারামিটারসমূহ

  • 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 – প্রাইভেট কী এনকোডিং-এর জন্য স্ট্রিং ভ্যালু।

উদাহরণ ১

generateKeyPairSync.js নামে একটি ফাইল তৈরি করুন এবং নিচের কোড স্নিপেটটি কপি করুন। ফাইল তৈরি করার পর নিচের কমান্ড দিয়ে কোডটি রান করুন:

node generateKeyPairSync.js

generateKeyPairSync.js

// Node.js প্রোগ্রাম crypto.generateKeyPairSync() মেথডের ফ্লো দেখানোর জন্য
// crypto মডিউল থেকে generateKeyPairSync ইম্পোর্ট করুন
const { generateKeyPairSync } = require('crypto');

// সিঙ্ক প্রসেসে পাবলিক কী এবং প্রাইভেট কী-এর ভ্যালু পান
const { publicKey, privateKey } = generateKeyPairSync('ec', {
    namedCurve: 'secp256k1', // অপশনগুলো ইম্প্লিমেন্ট করুন
    publicKeyEncoding: {
        type: 'spki',
        format: 'der'
    },
    privateKeyEncoding: {
        type: 'pkcs8',
        format: 'der'
    }
});

// সিঙ্ক প্রসেসে অ্যাসিমেট্রিক কী জোড়া প্রিন্ট করুন
console.log("The public key is: ", publicKey);
console.log();
console.log("The private key is: ", privateKey);

আউটপুট

C:\home\node>> node generateKeyPairSync.js
The public key is: 
The private key is: 

উদাহরণ ২

আরেকটি উদাহরণ দেখি।

// Node.js প্রোগ্রাম crypto.generateKeyPairSync() মেথডের ফ্লো দেখানোর জন্য
// crypto মডিউল থেকে generateKeyPairSync ইম্পোর্ট করুন
const { generateKeyPairSync } = require('crypto');

// সিঙ্ক প্রসেসে পাবলিক কী এবং প্রাইভেট কী-এর ভ্যালু পান
const { publicKey, privateKey } = generateKeyPairSync('dsa', {
    modulusLength: 570, // অপশনগুলো ইম্প্লিমেন্ট করুন
    publicKeyEncoding: {
        type: 'spki',
        format: 'der'
    },
    privateKeyEncoding: {
        type: 'pkcs8',
        format: 'der'
    }
});

// এনকোডিং করার পর অ্যাসিমেট্রিক কী জোড়া প্রিন্ট করুন
console.log("Public Key is: ", publicKey)
console.log("The public key value in base64 is: ", publicKey.toString('base64'));
console.log("------------------------------------------------------")
console.log("Private Key is: ", privateKey)
console.log("The private key in base64 is: ", privateKey.toString('base64'));

আউটপুট

C:\home\node>> node generateKeyPairSync.js
Public Key is: 
The public key value in base64 is: MIIBDzCBvwYHKoZIzjgEATCBswJJAJpc3aPODo4+Du0RlhP+HKb2NScMYPlR7t0sdRJhr0JWPvtRyF Wmn5ZAldFdDrUye5eQ+HmwgJboEWtCUm3b24CoLSQ74P1YkwIdAJs5rCSAIefaTT469xx+/8C3jS4W jYpHci0rft8CR3Fx1wxDFdCHJBqPlR7iGxd+7nZlChABL7UqCZMaiwCJ2ijVXc5dgr3Frudu7CbaAn RJStbqDjm5ppj4aaZV/9FmKvWVao9wA0sAAkhQtXOIWQrHde+fXoZLgPhbTBctPB1tcFztNmq2s3IO KGfo2kFUL6eJu811SSZ1scQFLVKc5DrZIdW7t3UqzEH+xCVxNkWtGQk=
------------------------------------------------------
Private Key is: 
The private key in base64 is: MIHlAgEAMIG/BgcqhkjOOAQBMIGzAkkAmlzdo84Ojj4O7RGWE/4cpvY1Jwxg+VHu3Sx1EmGvQlY++1 HIVaaflkCV0V0OtTJ7l5D4ebCAlugRa0JSbdvbgKgtJDvg/ViTAh0AmzmsJIAh59pNPjr3HH7/wLeN LhaNikdyLSt+3wJHcXHXDEMV0IckGo+VHuIbF37udmUKEAEvtSoJkxqLAInaKNVdzl2CvcWu527sJt oCdElK1uoOObmmmPhpplX/0WYq9ZVqj3AEHgIcJ2ON17GGE4FrtkJak337GB+bAEkb+YjulN2rug==
  1. Node.js-এ crypto.publicDecrypt() মেথড

  2. Node.js-এ crypto.privateEncrypt() মেথড

  3. Node.js-এ crypto.privateDecrypt() মেথড

  4. Node.js-এ crypto.getHashes() মেথড