Node.js में crypto.createDecipheriv() मेथड 'crypto' मॉड्यूल का एक प्रोग्रामिंग इंटरफेस है। यह फंक्शन में पास किए गए एल्गोरिदम, की, iv और ऑप्शन्स के अनुसार डिसीफर (Decipher) ऑब्जेक्ट बनाता और वापस करता है।
सिंटैक्स
crypto.createDecipheriv(algorithm, key, iv, [options])
पैरामीटर्स
उपरोक्त पैरामीटर्स का विवरण नीचे दिया गया है:
algorithm – यह सिफर बनाने के लिए उपयोग किए जाने वाले एल्गोरिदम के लिए इनपुट लेता है। कुछ संभावित मान हैं: aes192, aes256, आदि।
key – यह एल्गोरिदम और iv द्वारा उपयोग की जाने वाली रॉ की के लिए इनपुट लेता है। संभावित मान निम्न प्रकार के हो सकते हैं: string, buffer, TypedArray या DataView। यह वैकल्पिक रूप से सीक्रेट प्रकार का ऑब्जेक्ट भी हो सकता है।
iv – जिसे इनिशियलाइज़ेशन वेक्टर के रूप में भी जाना जाता है। यह पैरामीटर iv के लिए इनपुट लेता है जो सिफर को अनिश्चित और अद्वितीय बनाता है। इसे सीक्रेट होने की आवश्यकता नहीं है। इसके संभावित मान प्रकार हैं: string, buffer, TypedArray, DataView। यदि सिफर द्वारा आवश्यक न हो तो यह null हो सकता है।
options – यह स्ट्रीम व्यवहार को नियंत्रित करने के लिए एक वैकल्पिक पैरामीटर है। यह वैकल्पिक नहीं है जब सिफर CCM या OCB मोड में उपयोग किया जाता है (जैसे 'aes-256-ccm')।
उदाहरण 1: पासवर्ड से डिक्रिप्शन
createDecipheriv.js नाम से एक फाइल बनाएं और नीचे दिया गया कोड स्निपेट कॉपी करें। फाइल बनाने के बाद, नीचे दिखाए अनुसार कोड चलाने के लिए निम्न कमांड का उपयोग करें:
node createDecipheriv.js
createDecipheriv.js
// ECDH बनाने के लिए एक नोड डेमो प्रोग्राम
// crypto मॉड्यूल इम्पोर्ट करना
const crypto = require('crypto');
// एल्गोरिदम इनिशियलाइज़ करना
const algorithm = 'aes-192-cbc';
// पासवर्ड परिभाषित और इनिशियलाइज़ करना
const password = '123456789'
// की इनिशियलाइज़ करना
const key = crypto.scryptSync(password, 'TutorialsPoint', 24);
// iv वेक्टर इनिशियलाइज़ करना
const iv = Buffer.alloc(16, 0);
// उपरोक्त परिभाषित पैरामीटर्स के साथ डिसीफर बनाना
const decipher = crypto.createDecipheriv(algorithm, key, iv);
let decrypted = '';
// डेटा पढ़ना और डिक्रिप्ट करना
decipher.on('readable', () => {
let chunk;
while (null !== (chunk = decipher.read())) {
decrypted += chunk.toString('utf8');
}
});
// क्लोजिंग/एंड इवेंट हैंडल करना
decipher.on('end', () => {
console.log(decrypted);
});
// डिक्रिप्ट किया जाने वाला एन्क्रिप्टेड डेटा
const encrypted = 'uqeQEkXy5dpJjQv+JDvMHw==';
// डिक्रिप्टेड टेक्स्ट प्रिंट करना
decipher.write(encrypted, 'base64');
decipher.end();
console.log("Completed... !");
आउटपुट
C:\home\node>> node createDecipheriv.js Completed... ! TutorialsPoint
उदाहरण 2: पूर्ण एन्क्रिप्शन और डिक्रिप्शन साइकिल
आइए एक और उदाहरण देखते हैं।
// ECDH बनाने के लिए एक नोड डेमो प्रोग्राम
// crypto मॉड्यूल इम्पोर्ट करना
const crypto = require('crypto');
// एल्गोरिदम इनिशियलाइज़ करना
const algorithm = 'aes-256-cbc';
// पासवर्ड परिभाषित और इनिशियलाइज़ करना
const password = '123456789'
// की इनिशियलाइज़ करना
const key = crypto.randomBytes(32);
// iv वेक्टर इनिशियलाइज़ करना
const iv = crypto.randomBytes(16);
// डेटा एन्क्रिप्ट करने के लिए एन्क्रिप्ट फंक्शन
function encrypt(text) {
// उपरोक्त परिभाषित पैरामीटर्स के साथ सिफर बनाना
let cipher = crypto.createCipheriv('aes-256-cbc', Buffer.from(key), iv);
// एन्क्रिप्टेड टेक्स्ट अपडेट करना...
let encrypted = cipher.update(text);
// कन्कैटेनेशन उपयोग करना
encrypted = Buffer.concat([encrypted, cipher.final()]);
// एन्क्रिप्टेड डेटा के साथ iv वेक्टर वापस करना
return {
iv: iv.toString('hex'),
encryptedData: encrypted.toString('hex')
};
}
// डेटा डिक्रिप्ट करने के लिए डिक्रिप्ट फंक्शन
function decrypt(text) {
let iv = Buffer.from(text.iv, 'hex');
let encryptedText = Buffer.from(text.encryptedData, 'hex');
// एल्गो, की और iv से डिसीफर बनाना
let decipher = crypto.createDecipheriv('aes-256-cbc', Buffer.from(key), iv);
// डिक्रिप्टेड टेक्स्ट अपडेट करना
let decrypted = decipher.update(encryptedText);
decrypted = Buffer.concat([decrypted, decipher.final()]);
// डिक्रिप्शन के बाद रिस्पांस डेटा वापस करना
return decrypted.toString();
}
// नीचे दिए गए डेटा को एन्क्रिप्ट करना और आउटपुट प्रिंट करना
var output = encrypt("Welcome to TutorialsPoint !");
console.log("Encrypted data -- ", output);
// डिक्रिप्टेड डेटा प्रिंट करना
console.log("Decrypted data -- ", decrypt(output));
आउटपुट
C:\home\node>> node createDecipheriv.js
Encrypted data -- { iv: '3fb2c84290e04d9bfb099bc65a7ac941', encryptedData: '4490777e90c5a78037cb92a99d561ae250562e2636af459b911cfa01c0191e3f' }
Decrypted data -- Welcome to TutorialsPoint !