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 encryptionData after encryption: Data after decryption: