Node.js-এ crypto.publicEncrypt() মেথডটি প্যারামিটারে দেওয়া পাবলিক কী ব্যবহার করে বাফার প্যারামিটারে দেওয়া ডেটা এনক্রিপ্ট করতে ব্যবহৃত হয়। রিটার্ন করা ডেটা সংশ্লিষ্ট প্রাইভেট কী ব্যবহার করে ডিক্রিপ্ট করা যায়।
সিনট্যাক্স
crypto.publicEncrypt(key, buffer)
প্যারামিটারসমূহ
key – এতে নিচের ৫ টাইপের ডেটা থাকতে পারে: Object, String, Buffer বা KeyObject।
key – এই ফিল্ডে PEM এনকোডেড পাবলিক বা প্রাইভেট কী থাকে। এটি string, buffer বা keyObject টাইপের হতে পারে।
oaepHash – OAEP প্যাডিং এবং MGF1-এর জন্য ব্যবহৃত হ্যাশ ফাংশন। ডিফল্ট ভ্যালু:
'sha1'।oaepLabel – OAEP প্যাডিং-এর জন্য ভ্যালু। নির্দিষ্ট না করলে কোনো লেবেল ব্যবহৃত হয় না।
passphrase – প্রাইভেট কী-এর জন্য অপশনাল পাসফ्रेज।
padding – crypto.constants-এ সংজ্ঞায়িত অপশনাল ভ্যালু।
encoding – বাফার, কী, oaepLabel বা passphrase স্ট্রিং হলে ব্যবহৃত এনকোডিং টাইপ।
buffer – এনক্রিপ্ট করার জন্য ডেটা কন্টেন্ট। সম্ভাব্য বাফার টাইপ: string, TypedArray, Buffer, ArrayBuffer, DataView।
উদাহরণ ১
publicEncrypt.js নামে একটি ফাইল তৈরি করুন এবং নিচের কোড স্নিপেটটি কপি করুন। ফাইল তৈরি করার পর নিচের কমান্ড দিয়ে কোডটি রান করুন:
node publicEncrypt.js
publicEncrypt.js
// Node.js প্রোগ্রাম crypto.publicEncrypt() মেথডের ফ্লো দেখানোর জন্য
// crypto এবং fs মডিউল ইম্পোর্ট করুন
const crypto = require('crypto');
const 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);
}
// কী জেনারেট করুন
generateKeyFiles();
// নিচের ফাংশন দিয়ে স্ট্রিং এনক্রিপ্ট করুন
function encryptString (plaintext, publicKeyFile) {
const publicKey = fs.readFileSync(publicKeyFile, "utf8");
// নিচের প্যারামিটার সহ publicEncrypt() কল করুন
const encrypted = crypto.publicEncrypt(publicKey, Buffer.from(plaintext));
return encrypted.toString("base64");
}
// এনক্রিপ্ট করা টেক্সট
const plainText = "TutorialsPoint";
// এনক্রিপ্টেড টেক্সট সংজ্ঞায়িত করুন
const encrypted = encryptString(plainText, "./public_key");
// প্লেইন টেক্সট প্রিন্ট করুন
console.log("Plaintext:", plainText);
// এনক্রিপ্টেড টেক্সট প্রিন্ট করুন
console.log("Encrypted: ", encrypted);
আউটপুট
C:\home\node>> node publicEncrypt.js Plaintext: TutorialsPoint Encrypted: kgnqPxy/n34z+/5wd7MZiMAL5LrQisTLfZiWoSChXSvxgtifMQaZ56cbF+twA55olM0rFfnuV6qqtc a8SXIHQrk=
উদাহরণ ২
আরেকটি উদাহরণ দেখি।
// Node.js প্রোগ্রাম crypto.publicEncrypt() মেথডের ফ্লো দেখানোর জন্য
// crypto এবং fs মডিউল ইম্পোর্ট করুন
const crypto = require('crypto');
const 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);
}
// কী জেনারেট করুন
generateKeyFiles();
// নিচের ফাংশন দিয়ে স্ট্রিং এনক্রিপ্ট করুন
function encryptString (plaintext, publicKeyFile) {
const publicKey = fs.readFileSync(publicKeyFile, "utf8");
// নিচের প্যারামিটার সহ publicEncrypt() কল করুন
const encrypted = crypto.publicEncrypt(publicKey, Buffer.from(plaintext));
return encrypted;
}
// এনক্রিপ্ট করা টেক্সট
const plainText = "Hello TutorialsPoint!";
// এনক্রিপ্টেড টেক্সট সংজ্ঞায়িত করুন
const encrypted = encryptString(plainText, "./public_key");
// প্লেইন টেক্সট প্রিন্ট করুন
console.log("Plaintext:", plainText);
// এনক্রিপ্টেড বাফার প্রিন্ট করুন
console.log("Buffer: ", encrypted);
আউটপুট
C:\home\node>> node publicEncrypt.js Plaintext: Hello TutorialsPoint! Buffer: