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

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

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: 
            
  1. Node.js-এ crypto.publicDecrypt() মেথড

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

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

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