ServBay में Sodium PHP एक्सटेंशन का उपयोग कैसे करें
ServBay एक शक्तिशाली स्थानीय वेब विकास इंटीग्रेटेड वातावरण है, जिसमें Sodium PHP एक्सटेंशन प्री-इंस्टॉल्ड और डिफ़ॉल्ट रूप से सक्रिय रहता है। Sodium एक आधुनिक और उपयोग में आसान एन्क्रिप्शन लाइब्रेरी है, जिसका व्यापक उपयोग डेटा एन्क्रिप्शन और सुरक्षित संचार में होता है। ServBay की मदद से, डेवलपर्स को किसी भी अतिरिक्त कम्पाइलिंग या कॉन्फ़िगरेशन की जरूरत नहीं पड़ती—आप सीधे अपने PHP ऐप्लिकेशन में Sodium एक्सटेंशन का उपयोग करके डेटा की सुरक्षा सुनिश्चित कर सकते हैं।
Sodium एक्सटेंशन का परिचय
Sodium (libsodium) एक अत्याधुनिक एन्क्रिप्शन लाइब्रेरी है, जिसे सरलता, उपयोग में आसानी और सुरक्षा के लिए डिज़ाइन किया गया है। यह लाइब्रेरी कई प्रकार की एन्क्रिप्शन एल्गोरिदम और ऑपरेशंस को सपोर्ट करती है, जैसे: सिमेट्रिक (संपर्क आधारित) एन्क्रिप्शन, एसिमेट्रिक एन्क्रिप्शन, डिजिटल सिग्नेचर, हैशिंग, की-एक्सचेंज आदि। PHP 7.2 से, Sodium कोर एक्सटेंशन के रूप में PHP में शामिल है—जो कि अब बंद हो चुके mcrypt लाइब्रेरी का आधुनिक और ज्यादा सुरक्षित विकल्प है।
मुख्य विशेषताएँ
- आसान उपयोग: सिंपल API इंटरफेस देता है, जिससे डेवलपर्स के लिए डेटा एन्क्रिप्ट और डिक्रिप्ट करना बेहद आसान है।
- उच्च सुरक्षा: आधुनिक एन्क्रिप्शन एल्गोरिदम और सर्वोत्तम प्रैक्टिसेज़ का प्रयोग करता है।
- मल्टीफंक्शनल: सिमेट्रिक/एसिमेट्रिक एन्क्रिप्शन, डिजिटल सिग्नेचर, हैशिंग, और की-एक्सचेंज सहित कई कार्यों को सपोर्ट करता है।
- क्रॉस-प्लेटफार्म: विभिन्न ऑपरेटिंग सिस्टम और प्रोग्रामिंग लैंग्वेज में उपलब्ध।
- उच्च प्रदर्शन: तेज़ एन्क्रिप्शन/डिक्रिप्शन प्रोसेसिंग, जिससे हाई-परफॉरमेंस ऐप्लिकेशन में भी उपयोगी है।
mcrypt के विकल्प के रूप में Sodium
mcrypt लाइब्रेरी पहले PHP में व्यापक रूप से प्रयोग होती थी, लेकिन इसे अब मेंटेन नहीं किया जाता और इसमें कई सुरक्षा जोखिम थे। इसलिए PHP 7.1 में इसे बंद कर दिया गया और PHP 7.2 से पूरी तरह हटा दिया गया। Sodium को एक आधुनिक, सुरक्षित और उपयोगकर्ता के अनुकूल विकल्प के तौर पर शामिल किया गया। इसकी फ़ीचर्स mcrypt से बेहतर हैं और नए प्रोजेक्ट्स में mcrypt के स्थान पर केवल Sodium का ही इस्तेमाल करने की सिफारिश की जाती है।
ServBay में Sodium की उपलब्धता और सक्रियता
ServBay अपने साथ शामिल PHP 7.2 और उससे ऊपर के सभी संस्करणों के लिए Sodium एक्सटेंशन को पहले ही कम्पाइल और डिफ़ॉल्ट रूप से सक्रिय करके देता है। मतलब, आपको Sodium को इंस्टॉल या कॉन्फ़िगर करने की जरूरत नहीं है। बस ServBay को चालू करें और मनचाहा PHP वर्शन चलाएं—अब आप कोड में Sodium फंक्शन डायरेक्टली इस्तेमाल कर सकते हैं।
Sodium की सक्रियता की पुष्टि के लिए, ServBay का phpinfo() फीचर इस्तेमाल करें। अपनी PHP वर्शन चुनें, ‘phpinfo()’ आप्शन देखें और खुले पेज पर 'sodium' खोजें—आपको Sodium मॉड्यूल की जानकारी दिखाई देगी।
PHP कोड में Sodium एक्सटेंशन का उपयोग
Sodium एक्सटेंशन के सक्रिय होने की पुष्टि के बाद, अब आप अपने PHP प्रोजेक्ट्स में इसकी फंक्शन्स का इस्तेमाल कर सकते हैं। अपने PHP स्क्रिप्ट्स को ServBay की वेबसाइट रूट डायरेक्टरी (डिफ़ॉल्ट रूप से /Applications/ServBay/www
) के नीचे संबंधित सब-डायरेक्टरी में सेव करें और ब्राउज़र से ओपन करें। नीचे कुछ बेसिक यूज़-केस कोड उदाहरण दिए जा रहे हैं:
उदाहरण कोड (संपर्क आधारित एन्क्रिप्शन)
संपर्क (Symmetric) एन्क्रिप्शन में एक ही कुंजी एन्क्रिप्शन और डिक्रिप्शन दोनों में प्रयोग होती है।
php
<?php
// एन्क्रिप्ट किए जाने वाला संदेश
$message = "This is a secret message from servbay.demo";
// एक रैंडम कुंजी जनरेट करें (निश्चित लंबाई: SODIUM_CRYPTO_SECRETBOX_KEYBYTES)
$key = sodium_crypto_secretbox_keygen();
// एक रैंडम Nonce (सिर्फ एक बार प्रयुक्त होने वाला नंबर) जनरेट करें, एन्क्रिप्शन और डिक्रिप्शन में वही Nonce आवश्यक है
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
// कुंजी और Nonce का उपयोग करके एन्क्रिप्ट करें
$ciphertext = sodium_crypto_secretbox($message, $nonce, $key);
echo "मूल संदेश: " . $message . "\n";
echo "Nonce (Base64): " . base64_encode($nonce) . "\n"; // Nonce आमतौर पर ciphertext के साथ स्टोर या ट्रांसमिट किया जाता है
echo "साइफरटेक्स्ट (Base64): " . base64_encode($ciphertext) . "\n\n";
// --- डिक्रिप्शन प्रक्रिया ---
// मान लें कि आपको ciphertext, Nonce और कुंजी ये सब मिल चुके हैं
$retrieved_ciphertext = $ciphertext; // संग्रह या ट्रांसमिशन से प्राप्त साइफरटेक्स्ट
$retrieved_nonce = $nonce; // संग्रह या ट्रांसमिशन से प्राप्त Nonce
$retrieved_key = $key; // संग्रह या ट्रांसमिशन से प्राप्त कुंजी
// कुंजी और Nonce का उपयोग करके डिक्रिप्ट करें
$decrypted = sodium_crypto_secretbox_open($retrieved_ciphertext, $retrieved_nonce, $retrieved_key);
// जांचें कि डिक्रिप्शन सफल रहा या नहीं
if ($decrypted === false) {
echo "डिक्रिप्शन विफल!\n";
} else {
echo "डिक्रिप्ट किया गया संदेश: " . $decrypted . "\n";
}
// संवेदनशील डेटा मिटाएँ, ताकि मेमोरी में कोई रिसाव न हो
sodium_memzero($key);
sodium_memzero($retrieved_key);
if ($decrypted !== false) {
sodium_memzero($decrypted);
}
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
उदाहरण कोड (असंपर्क आधारित एन्क्रिप्शन)
असंपर्क (Asymmetric) एन्क्रिप्शन में एक कुंजी जोड़ी—पब्लिक की और प्राइवेट की—का उपयोग होता है। पब्लिक की से एन्क्रिप्ट, प्राइवेट की से डिक्रिप्ट किया जाता है।
php
<?php
// एन्क्रिप्ट किए जाने वाला संदेश
$message = "This is another secret message for servbay-demo user";
// कुंजी जोड़ी जनरेट करें (पब्लिक की एन्क्रिप्शन के लिए, प्राइवेट की डिक्रिप्शन के लिए)
$keypair = sodium_crypto_box_keypair();
$publicKey = sodium_crypto_box_publickey($keypair); // दूसरों को सार्वजनिक करें
$secretKey = sodium_crypto_box_secretkey($keypair); // खुद के लिए रखें, कभी उजागर न करें
echo "पब्लिक की (Base64): " . base64_encode($publicKey) . "\n";
echo "प्राइवेट की (Base64): [संवेदनशील, कभी प्रदर्शित या साझा न करें]\n\n";
// --- एन्क्रिप्शन प्रक्रिया (प्राप्तकर्ता की पब्लिक की से) ---
// मान लें, भेजने वाले के पास प्राप्तकर्ता की $publicKey है
// एक रैंडम Nonce जनरेट करें, एन्क्रिप्शन और डिक्रिप्शन दोनों में उसी का प्रयोग करें
$nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES);
// प्राप्तकर्ता की पब्लिक की और भेजने वाले की प्राइवेट की से एन्क्रिप्ट (सरलता के लिए इसी keypair का उपयोग)
// ध्यान दें: वास्तिवक एप्लिकेशन में भेजने वाले की प्राइवेट की + प्राप्तकर्ता की पब्लिक की से संयोजन करें
// Sodium का crypto_box वास्तव में Curve25519 आधारित डिफी-हेलमैन की-एक्सचेंज पर आधारित है, इसलिए दोनों साइड्स की फोन जरूरी है
// उदाहरण को सरल रखने के लिए, मानें कि दोनों की-एक ही यूज़र के हैं
$ciphertext = sodium_crypto_box($message, $nonce, $keypair); // इस सिंप्लिफाइड उदाहरण में keypair (पब्लिक + प्राइवेट की) का उपयोग
echo "मूल संदेश: " . $message . "\n";
echo "Nonce (Base64): " . base64_encode($nonce) . "\n"; // Nonce को ciphertext के साथ स्टोर या ट्रांसमिट करें
echo "साइफरटेक्स्ट (Base64): " . base64_encode($ciphertext) . "\n\n";
// --- डिक्रिप्शन प्रक्रिया (प्राप्तकर्ता की प्राइवेट की से) ---
// मान लें कि प्राप्तकर्ता के पास ciphertext, Nonce, अपनी प्राइवेट की ($secretKey), और भेजने वाले की पब्लिक की ($publicKey) है
// यहाँ सरलीकरण में केवल $keypair प्रयोग होगा
$retrieved_ciphertext = $ciphertext;
$retrieved_nonce = $nonce;
$retrieved_keypair = $keypair; // डिक्रिप्शन के लिए पूरा keypair
// अपनी कुंजी जोड़ी का प्रयोग करते हुए डिक्रिप्ट करें
$decrypted = sodium_crypto_box_open($retrieved_ciphertext, $retrieved_nonce, $retrieved_keypair);
// जाँचें कि डिक्रिप्शन सफल रहा या नहीं
if ($decrypted === false) {
echo "डिक्रिप्शन विफल!\n";
} else {
echo "डिक्रिप्ट किया गया संदेश: " . $decrypted . "\n";
}
// संवेदनशील डेटा मिटाएँ
sodium_memzero($secretKey); // प्राइवेट की
sodium_memzero($keypair); // कुंजी जोड़ी
if ($decrypted !== false) {
sodium_memzero($decrypted);
}
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
उदाहरण कोड (डिजिटल सिग्नेचर)
डिजिटल सिग्नेचर का उपयोग संदेश की प्रामाणिकता और पूर्णता जांच के लिए होता है। सिग्नेचर के लिए प्राइवेट की और सत्यापन के लिए पब्लिक की प्रयोग करें।
php
<?php
// हस्ताक्षर किए जाने वाला संदेश
$message = "This message needs to be signed by servbay.demo";
// सिग्नेचर के लिए कुंजी जोड़ी बनाएं (प्राइवेट की साइन और पब्लिक की सत्यापन के लिए)
$keypair = sodium_crypto_sign_keypair();
$publicKey = sodium_crypto_sign_publickey($keypair); // सत्यापनकर्ता को सार्वजनिक करें
$secretKey = sodium_crypto_sign_secretkey($keypair); // खुद रखें, कभी उजागर न करें
echo "पब्लिक की (Base64): " . base64_encode($publicKey) . "\n";
echo "प्राइवेट की (Base64): [संवेदनशील, कभी प्रदर्शित या साझा न करें]\n\n";
// --- सिग्नेचर प्रक्रिया (भेजने वाले की प्राइवेट की से) ---
$signature = sodium_crypto_sign_detached($message, $secretKey);
echo "मूल संदेश: " . $message . "\n";
echo "सिग्नेचर (Base64): " . base64_encode($signature) . "\n\n";
// --- सत्यापन प्रक्रिया (भेजने वाले की पब्लिक की से) ---
// मान लें कि सत्यापक के पास संदेश, सिग्नेचर और पब्लिक की ($publicKey) है
$retrieved_message = $message;
$retrieved_signature = $signature;
$retrieved_publicKey = $publicKey;
// पब्लिक की से सिग्नेचर सत्यापित करें
if (sodium_crypto_sign_verify_detached($retrieved_signature, $retrieved_message, $retrieved_publicKey)) {
echo "सिग्नेचर वैध है! संदेश से कोई छेड़छाड़ नहीं हुई और यह सच में प्राइवेट की धारक ने ही भेजा है।\n";
} else {
echo "सिग्नेचर अमान्य! संदेश में छेड़छाड़ हुई, या यह सिग्नेचर संबंधित प्राइवेट की से नहीं बनाया गया।\n";
}
// संवेदनशील डेटा मिटाएँ
sodium_memzero($secretKey); // प्राइवेट की
sodium_memzero($keypair); // कुंजी जोड़ी
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
निष्कर्ष
ServBay के माध्यम से डेवलपर्स प्री-इंस्टॉल्ड और डिफ़ॉल्ट रूप से सक्रिय Sodium PHP एक्सटेंशन का बेझिझक उपयोग कर सकते हैं। इससे स्थानीय वातावरण में Sodium की स्थापना और सेटअप की जटिलता दूर हो जाती है, और आप पूरी तरह सुरक्षित ऐप्लिकेशन विकसित करने पर ध्यान केंद्रित कर सकते हैं। Sodium, mcrypt का आधुनिक और सुरक्षित विकल्प है और सुरक्षित-विश्वसनीय वेब एप्लिकेशन के विकास के लिए एक महत्वपूर्ण टूल है। ServBay इस प्रक्रिया को निर्बाध बनाता है और डेवलपर्स को तेज, सुरक्षित और विश्वसनीय स्थानीय विकास वातावरण देता है।