Node.js-এ crypto.scrypt() মেথডটি scrypt মেথডের একটি অ্যাসিনক্রোনাস ইম্প্লিমেন্টেশন প্রদান করে। scrypt হলো একটি পাসওয়ার্ড-ভিত্তিক কী ডেরাইভেশন ফাংশন (password-based key derivation function) যা সিস্টেমকে ব্রুট-ফোর্স আক্রমণ থেকে রক্ষা করে এবং তা অনुपকারী করে তোলে। তবে scrypt ফাংশনটি কম্পিউটেশনালি এবং মেমরি-ওয়াইজ দাঁড়িয়ে দাওয়া ম Frente।
সিনট্যাক্স
crypto.scrypt(password, salt, keylen, [options], [callback])
প্যারামিটারসমূহ
password – scrypt-এর জন্য পাসওয়ার্ড ফিল্ড যা এন্ট্রি ডিকোড করতে দরকার। এটি স্ট্রিং, অবজেক্ট, TypedArray, ইত্যাদি হতে পারে।
salt – এই ভ্যালু যতটা সম্ভব অনন্য হওয়া উচিত। এটি মূলত ডেটা এনক্রিপ্ট করতে ব্যবহৃত হয়। salt-এর ন্যূনতম প্রস্তাবিত দৈর্ঘ্য ১৬ বাইট।
keylen – এই প্যারামিটার কী-এর দৈর্ঘ্য সংজ্ঞায়িত করে এবং এটি একটি সংখ্যা হওয়া উচিত।
options
cost – প্রতিটি মেমরি নেওয়ার জন্য সিপিইউ কস্ট। এই ভ্যালু ২-এর ঘাত হতে হবে এবং ১-এর চেয়ে বড়। ডিফল্ট ভ্যালু: 16384।
blockSize – প্রতিটি ব্লক সাইজের ভ্যালু সংজ্ঞায়িত করে। ডিফল্ট ভ্যালু: 8।
parallelization – প্যারাললাইজেশন প্যারামিটার সংজ্ঞায়িত করে। ডিফল্ট ভ্যালু: 1।
N – cost-এর অ্যালিয়াস এবং এর স্থানে ব্যবহার করা যায়। একবারে শুধু একটি সংজ্ঞায়িত করা যায়।
r – blockSize-এর অ্যালিয়াস এবং একইভাবে শুধু একটি সংজ্ঞায়িত করা যায়।
p – parallelization-এর অ্যালিয়াস। শুধু একটি সংজ্ঞায়িত করা যায়।
maxmem – মেমরির আপার বাউন্ড ভ্যালু। 128*N*r > maxmem হলে এরর থ্রো করা হয়। ডিফল্ট ভ্যালু: 32*1024*1024।
callback – এরর থ্রো হলে কল করা ফাংশন যদি আপনি এটি হ্যান্ডল করতে চান।
উদাহরণ ১
scrypt.js নামে একটি ফাইল তৈরি করুন এবং নিচের কোড স্নিপেটটি কপি করুন। ফাইল তৈরি করার পর নিচের কমান্ড দিয়ে কোডটি রান করুন:
node scrypt.js
scrypt.js
// Node.js প্রোগ্রাম crypto.scrypt() মেথডের ফ্লো দেখানোর জন্য
// crypto মডিউল ইম্পোর্ট করুন
var crypto = require('crypto');
// নিচের প্যারামিটার সহ scrypt() মেথড কল করুন
crypto.scrypt('tutorialspoint', 'asdfghjkl', 32, (err, derivedKey) => {
if (err) throw err;
// ডেরাইভড কী বাফার ভ্যালু হিসেবে প্রিন্ট করুন
console.log("The derived key(1) is:", derivedKey);
});
// cost অপশন সহ scrypt() মেথড কল করুন
crypto.scrypt('GeeksforGeeks', 'tfytdx', 128, { N: 512 }, (err, derivedKey) => {
if (err) throw err;
// ডেরাইভড কী বাফার ভ্যালু হিসেবে প্রিন্ট করুন
console.log("The derived key(2) is:", derivedKey);
console.log();
});
আউটপুট
C:\home\node>> node scrypt.js The derived key(2) is:The derived key(1) is:
উদাহরণ ২
আরেকটি উদাহরণ দেখি।
// Node.js প্রোগ্রাম crypto.scrypt() মেথডের ফ্লো দেখানোর জন্য
// crypto মডিউল ইম্পোর্ট করুন
var crypto = require('crypto');
// salt-এর ভ্যালু TypedArray হিসেবে ইনিশিয়ালাইজ করুন
const salt = new Uint32Array(7);
// নিচের প্যারামিটার সহ scrypt() মেথড ব্যবহার করুন
crypto.scrypt('WelcomeTutorialspoint', salt, 16, (err, derivedKey) => {
if (err) throw err;
// এনকোডেড স্ট্রিং ফরম্যাটে ডেরাইভড কী প্রিন্ট করুন
console.log("The derived key(1) is:", derivedKey.toString("ascii"));
});
// salt-এর ভ্যালু DataView হিসেবে ইনিশিয়ালাইজ করুন
const newSalt = new DataView(new ArrayBuffer(5));
// cost প্যারামিটার সহ scrypt() মেথড ব্যবহার করুন
crypto.scrypt('HelloTutorialspoint', newSalt, 16, { N: 32 }, (err, derivedKey) => {
if (err) throw err;
// এনকোডেড স্ট্রিং ফরম্যাটে ডেরাইভড কী প্রিন্ট করুন
console.log("The derived key(2) is:", derivedKey.toString("base64"));
});
আউটপুট
C:\home\node>> node scrypt.js The derived key(2) is: PBYDRlgayLVGjC8z3YUcSQ== The derived key(1) is: