Node.js में crypto.publicDecrypt() मेथड का उपयोग पब्लिक की के साथ बफर में दिए गए डेटा को डिक्रिप्ट करने के लिए किया जाता है। यह बफर संबंधित प्राइवेट की का उपयोग करके एन्क्रिप्ट किया गया था, यानी crypto.privateEncrypt() मेथड द्वारा।
सिंटैक्स
crypto.publicDecrypt(key, buffer)
पैरामीटर्स
उपरोक्त पैरामीटर्स का विवरण नीचे दिया गया है:
key – इसमें निम्न 5 प्रकार के डेटा हो सकते हैं: Object, String, Buffer या KeyObject।
passphrase – यह प्राइवेट की के लिए एक वैकल्पिक पासफ्रेज़ है।
padding – यह crypto.constants में परिभाषित एक वैकल्पिक मान है।
encoding – यह एन्कोडिंग का प्रकार है जिसका उपयोग तब किया जाता है जब buffer, key, oaepLabel या passphrase मान स्ट्रिंग होते हैं।
buffer – यह फील्ड डिक्रिप्ट किए जाने वाले डेटा कंटेंट को रखता है। संभावित बफर प्रकार हैं: string, TypedArray, Buffer, ArrayBuffer, DataView।
उदाहरण 1: प्राइवेट की से एन्क्रिप्ट और पब्लिक की से डिक्रिप्ट
publicDecrypt.js नाम से एक फाइल बनाएं और नीचे दिया गया कोड स्निपेट कॉपी करें। फाइल बनाने के बाद, नीचे दिखाए अनुसार कोड चलाने के लिए निम्न कमांड का उपयोग करें:
node publicDecrypt.js
publicDecrypt.js
// crypto.publicDecrypt डेमो उदाहरण
// crypto, fs और path मॉड्यूल इम्पोर्ट करना
var crypto = require('crypto');
var fs = require('fs');
const path = require('path');
// कीज़ जेनरेट करने के लिए नीचे दिया गया फंक्शन बनाना
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);
fs.writeFileSync("private_key", keyPair.privateKey);
}
// Generate keys मेथड कॉल करना
generateKeyFiles();
// प्राइवेट और पब्लिक की पढ़ना
var private = fs.readFileSync('private_key');
var public = fs.readFileSync('public_key');
// मूल डेटा परिभाषित करना
var data = 'Welcome to TutorialsPoint';
console.log("Original Data is: " + data);
// प्राइवेट की का उपयोग करके डेटा एन्क्रिप्ट करना
encrypted = crypto.privateEncrypt(private, Buffer.from(data, 'utf8')).toString('base64');
// पब्लिक की का उपयोग करके डेटा डिक्रिप्ट करना
originalData = crypto.publicDecrypt(public, Buffer.from(encrypted, 'base64'));
console.log();
// एन्क्रिप्टेड मैसेज प्रिंट करना
console.log("Encrypted with private key: " + encrypted);
console.log();
// डिक्रिप्टेड मैसेज प्रिंट करना
console.log("Decrypted with public key: " + originalData.toString());
आउटपुट
C:\home\node>> node publicDecrypt.js Original Data is: Welcome to TutorialsPoint Encrypted with private key: EFBihrKebXb0gfCF7nTnw82yXpToH5eVBpLc8O5QL/ZgfZ/qJT5I/BejSMwV4NFCp+AIKnz2lrjmFh IhnpZWbF4= Decrypted with public key: Welcome to TutorialsPoint
उदाहरण 2: बफर के साथ एन्क्रिप्शन और डिक्रिप्शन
आइए एक और उदाहरण देखते हैं।
// crypto.publicDecrypt डेमो उदाहरण
// crypto और fs मॉड्यूल इम्पोर्ट करना
var crypto = require('crypto');
var 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);
fs.writeFileSync("private_key", keyPair.privateKey);
}
// Generate keys मेथड कॉल करना
generateKeyFiles();
// प्राइवेट की पढ़ना
privateKey = fs.readFileSync('private_key').toString();
var buffer = Buffer.from('Welcome to TutorialsPoint', 'utf8');
console.log("Data buffer before encryption")
console.log(buffer);
// बफर टेक्स्ट एन्क्रिप्ट करना
encrypted = crypto.privateEncrypt(privateKey, buffer);
// एन्क्रिप्शन के बाद डेटा प्रिंट करना
console.log("Data after encryption: ");
console.log(encrypted);
// पब्लिक की पढ़ना
publicKey = fs.readFileSync('public_key').toString();
// पब्लिक की का उपयोग करके एन्क्रिप्टेड टेक्स्ट डिक्रिप्ट करना
decryptedData = crypto.publicDecrypt(publicKey, encrypted);
// मूल कंटेंट प्रिंट करना
console.log("Data after decryption: ");
console.log(decryptedData);
आउटपुट
C:\home\node>> node publicDecrypt.js Data buffer before encryptionData after encryption: Data after decryption: