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

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

Node.js-এ crypto.publicDecrypt() মেথডটি পাবলিক কী ব্যবহার করে বাফারে দেওয়া ডেটা ডিক্রিপ্ট করতে ব্যবহৃত হয়। এই বাফারটি সংশ্লিষ্ট প্রাইভেট কী ব্যবহার করে এনক্রিপ্ট করা ছিল, অর্থাৎ crypto.privateEncrypt() মেথড দিয়ে।

সিনট্যাক্স

crypto.publicDecrypt(key, buffer)

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

  • key – এতে নিচের ৫ টাইপের ডেটা থাকতে পারে: Object, String, Buffer বা KeyObject।

    • passphrase – প্রাইভেট কী-এর জন্য অপশনাল পাসফ्रेज।

    • padding – crypto.constants-এ সংজ্ঞায়িত অপশনাল ভ্যালু।

    • encoding – বাফার, কী, oaepLabel বা passphrase স্ট্রিং হলে ব্যবহৃত এনকোডিং টাইপ।

  • buffer – ডিক্রিপ্ট করার জন্য ডেটা কন্টেন্ট। সম্ভাব্য বাফার টাইপ: string, TypedArray, Buffer, ArrayBuffer, DataView।

উদাহরণ ১

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

node publicDecrypt.js

publicDecrypt.js

// crypto.publicDecrypt ডেমো উদাহরণ
// crypto, fs এবং path মডিউল ইম্পোর্ট করুন
var crypto = require('crypto');
var fs = require('fs');
const path = require('path');

// কী জেনারেট করার ফাংশন তৈরি করুন
function generateKeyFiles() {
    const keyPair = crypto.generateKeyPairSync('rsa', {
        modulusLength: 520,
        publicKeyEncoding: {
            type: 'spki',
            format: 'pem'
        },
        privateKeyEncoding: {
            type: 'pkcs8',
            format: 'pem',
            cipher: 'aes-256-cbc',
            passphrase: ''
        }
    });
    // নিচের নামে পাবলিক কী ফাইল তৈরি করুন
    fs.writeFileSync("public_key", keyPair.publicKey);
    fs.writeFileSync("private_key", keyPair.privateKey);
}

// জেনারেট কী মেথড কল করুন
generateKeyFiles();

// প্রাইভেট এবং পাবলিক কী পড়ুন
var private = fs.readFileSync('private_key');
var public = fs.readFileSync('public_key');

// মূল ডেটা সংজ্ঞায়িত করুন
var data = 'Welcome to TutorialsPoint';
console.log("Original Data is: " + data);

// প্রাইভেট কী ব্যবহার করে ডেটা এনক্রিপ্ট করুন
encrypted = crypto.privateEncrypt(private, Buffer.from(data, 'utf8')).toString('base64');

// পাবলিক কী ব্যবহার করে ডেটা ডিক্রিপ্ট করুন
originalData = crypto.publicDecrypt(public, Buffer.from(encrypted, 'base64'));
console.log();

// এনক্রিপ্টেড মেসেজ প্রিন্ট করুন
console.log("Encrypted with private key: " + encrypted);
console.log();

// ডিক্রিপ্টেড মেসেজ প্রিন্ট করুন
console.log("Decrypted with public key: " + originalData.toString());

আউটপুট

C:\home\node>> node publicDecrypt.js
Original Data is: Welcome to TutorialsPoint
Encrypted with private key: EFBihrKebXb0gfCF7nTnw82yXpToH5eVBpLc8O5QL/ZgfZ/qJT5I/BejSMwV4NFCp+AIKnz2lrjmFh IhnpZWbF4=
Decrypted with public key: Welcome to TutorialsPoint

উদাহরণ ২

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

// crypto.publicDecrypt ডেমো উদাহরণ
// crypto এবং fs মডিউল ইম্পোর্ট করুন
var crypto = require('crypto');
var fs = require('fs');

// কী জেনারেট করার ফাংশন তৈরি করুন
function generateKeyFiles() {
    const keyPair = crypto.generateKeyPairSync('rsa', {
        modulusLength: 520,
        publicKeyEncoding: {
            type: 'spki',
            format: 'pem'
        },
        privateKeyEncoding: {
            type: 'pkcs8',
            format: 'pem',
            cipher: 'aes-256-cbc',
            passphrase: ''
        }
    });
    // নিচের নামে পাবলিক কী ফাইল তৈরি করুন
    fs.writeFileSync("public_key", keyPair.publicKey);
    fs.writeFileSync("private_key", keyPair.privateKey);
}

// জেনারেট কী মেথড কল করুন
generateKeyFiles();

// প্রাইভেট কী পড়ুন
privateKey = fs.readFileSync('private_key').toString();
var buffer = Buffer.from('Welcome to TutorialsPoint', 'utf8');
console.log("Data buffer before encryption")
console.log(buffer);

// বাফার টেক্সট এনক্রিপ্ট করুন
encrypted = crypto.privateEncrypt(privateKey, buffer);

// এনক্রিপশনের পর ডেটা প্রিন্ট করুন
console.log("Data after encryption: ");
console.log(encrypted);

// পাবলিক কী পড়ুন
publicKey = fs.readFileSync('public_key').toString();

// পাবলিক কী ব্যবহার করে এনক্রিপ্টেড টেক্সট ডিক্রিপ্ট করুন
decryptedData = crypto.publicDecrypt(publicKey, encrypted);

// মূল কন্টেন্ট প্রিন্ট করুন
console.log("Data after decryption: ");
console.log(decryptedData);

আউটপুট

C:\home\node>> node publicDecrypt.js
Data buffer before encryption

Data after encryption:

Data after decryption:
  1. Node.js-এ crypto.publicEncrypt() মেথড

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

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

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