Node.js में crypto.scrypt() मेथड scrypt मेथड का एक असिंक्रोनस कार्यान्वयन प्रदान करता है। scrypt को पासवर्ड-आधारित की डेरिवेशन फंक्शन (password-based key derivation function) के रूप में परिभाषित किया जा सकता है जो सिस्टम को ब्रूट-फोर्स हमलों से बचाता है और उन्हें अनुपयोगी बनाता है। लेकिन scrypt फंक्शन कम्प्यूटेशनली और मेमोरी-वार दोनों रूप से महंगा होता है।
सिंटैक्स
crypto.scrypt(password, salt, keylen, [options], [callback])
पैरामीटर्स
उपरोक्त पैरामीटर्स का विवरण नीचे दिया गया है:
password – scrypt के लिए आवश्यक पासवर्ड फील्ड जो एंट्री को डिकोड करने के लिए आवश्यक है। यह स्ट्रिंग, ऑब्जेक्ट, TypedArray, आदि हो सकता है।
salt – यह मान जितना संभव हो उतना यूनिक होना चाहिए। यह मुख्य रूप से डेटा एन्क्रिप्ट करने के लिए उपयोग किया जाता है। साल्ट की न्यूनतम सुझाई गई लंबाई 16 बाइट्स है।
keylen – यह पैरामीटर की लंबाई को परिभाषित करता है और एक नंबर होना चाहिए।
options
cost – यह प्रत्येक मेमोरी के लिए CPU की लागत है। यह मान 1 से अधिक 2 की घात होना चाहिए। डिफ़ॉल्ट मान: 16384।
blockSize – यह पैरामीटर प्रत्येक ब्लॉक साइज़ के लिए मान परिभाषित करता है। डिफ़ॉल्ट मान: 8।
parallelization – यह पैरामीटर पैरेललाइज़ेशन पैरामीटर को परिभाषित करता है। डिफ़ॉल्ट मान: 1।
N – यह पैरामीटर cost का उपनाम है और इसके स्थान पर उपयोग किया जा सकता है। एक समय में केवल एक को परिभाषित किया जा सकता है।
r – यह पैरामीटर blockSize का उपनाम है और इसी तरह एक समय में केवल एक को परिभाषित किया जा सकता है।
p – parallelization का उपनाम। केवल एक को परिभाषित किया जा सकता है।
maxmem – यह मेमोरी ऊपरी सीमा मान है। जब 128*N*r > maxmem हो तो त्रुटि फेंकी जाती है। डिफ़ॉल्ट मान: 32*1024*1024।
callback – यह फंक्शन तब कॉल किया जाता है जब कोई त्रुटि फेंकी जाती है यदि आप उसे हैंडल करना चाहते हैं।
उदाहरण 1: बेसिक scrypt उपयोग
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);
});
// कॉस्ट ऑप्शन के साथ 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:
उदाहरण 2: TypedArray और DataView के साथ scrypt
आइए एक और उदाहरण देखते हैं।
// Node.js प्रोग्राम crypto.scrypt() मेथड के फ्लो का प्रदर्शन करने के लिए
// crypto मॉड्यूल इम्पोर्ट करना
var crypto = require('crypto');
// साल्ट के मान को 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"));
});
// साल्ट के मान को DataView के रूप में इनिशियलाइज़ करना
const newSalt = new DataView(new ArrayBuffer(5));
// कॉस्ट पैरामीटर के साथ 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: