PHP में क्रिप्टोग्राफी: एन्क्रिप्शन और हैशिंग — व्यावहारिक मार्गदर्शिका

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP में क्रिप्टोग्राफी: डेटा एन्क्रिप्शन और हैशिंग



वेब एप्लिकेशन की सुरक्षा डेवलपर के प्रमुख कार्यों में से एक है। PHP डेटा की क्रिप्टोग्राफिक सुरक्षा के लिए शक्तिशाली अंतर्निहित उपकरण प्रदान करता है। इस लेख में हम दो मुख्य दिशाओं पर विचार करेंगे: एन्क्रिप्शन (डेटा को पुनर्प्राप्त करने की क्षमता के साथ रूपांतरण) और हैशिंग (अखंडता जांच के लिए एकतरफा रूपांतरण)।



1. PHP में हैशिंग



हैशिंग का उपयोग पासवर्ड, चेकसम और डेटा अखंडता सत्यापन के लिए किया जाता है। PHP में इस उद्देश्य के लिए password_hash() और hash() फ़ंक्शन का उपयोग किया जाता है।



1.1. पासवर्ड का सुरक्षित हैशिंग



पासवर्ड संग्रहीत करने के लिए कभी भी md5 या sha1 का उपयोग न करें। password_hash() के माध्यम से bcrypt एल्गोरिदम का उपयोग करें:



<?php// पासवर्ड हैशिंग$password = 'MySecureP@ss123';$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);

echo $hash; // $2y$12$...

// पासवर्ड सत्यापनif (password_verify('MySecureP@ss123', $hash)) { echo "पासवर्ड सही है!";} else { echo "गलत पासवर्ड!";}?>


password_hash() फ़ंक्शन स्वचालित रूप से सॉल्ट उत्पन्न करता है और एक सुरक्षित एल्गोरिदम का उपयोग करता है। cost पैरामीटर कम्प्यूटेशनल जटिलता को नियंत्रित करता है (10-12 अनुशंसित)।



1.2. मनमाना डेटा का हैशिंग



फ़ाइलों या डेटा की अखंडता जांच के लिए SHA-256 या SHA-3 एल्गोरिदम का उपयोग करें:



<?php$data = "जांच के लिए महत्वपूर्ण डेटा";$hash_sha256 = hash('sha256', $data);$hash_sha3_256 = hash('sha3-256', $data);

echo "SHA-256: " . $hash_sha256 . PHP_EOL;echo "SHA3-256: " . $hash_sha3_256 . PHP_EOL;

// फ़ाइल अखंडता जांच$file_hash = hash_file('sha256', '/path/to/file.zip');echo "फ़ाइल हैश: " . $file_hash;?>


2. PHP में सममित एन्क्रिप्शन



सममित एन्क्रिप्शन डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए एक कुंजी का उपयोग करता है। PHP OpenSSL और Sodium का समर्थन करता है।



2.1. OpenSSL के माध्यम से एन्क्रिप्शन (AES-256-GCM)



अनुशंसित मोड AES-256-GCM है, जो डेटा प्रमाणीकरण प्रदान करता है:



<?php$data = "गुप्त संदेश";$key = random_bytes(32); // 256-बिट कुंजी$iv = random_bytes(12);  // 96-बिट इनिशियलाइज़ेशन वेक्टर

// एन्क्रिप्शन$encrypted = openssl_encrypt( $data, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag);

// डिक्रिप्शन$decrypted = openssl_decrypt( $encrypted, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag);

echo "मूल डेटा: " . $data . PHP_EOL;echo "डिक्रिप्टेड: " . $decrypted . PHP_EOL;echo "प्रमाणीकरण टैग: " . bin2hex($tag);?>


महत्वपूर्ण: डिक्रिप्शन के लिए $key और $iv (या उनका संयोजन) संग्रहीत करें। $tag डेटा अखंडता की जांच करता है।



2.2. Sodium के माध्यम से एन्क्रिप्शन (libsodium)



PHP 7.2 से, Sodium कोर का हिस्सा है। यह सरल और अधिक सुरक्षित है:



<?php$data = "गोपनीय जानकारी";$key = sodium_crypto_secretbox_keygen(); // कुंजी उत्पादन$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);

// एन्क्रिप्शन$ciphertext = sodium_crypto_secretbox($data, $nonce, $key);

// डिक्रिप्शन$decrypted = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);

echo "एन्क्रिप्टेड: " . base64_encode($ciphertext) . PHP_EOL;echo "डिक्रिप्टेड: " . $decrypted . PHP_EOL;

// मेमोरी साफ़ करनाsodium_memzero($key);?>


3. असममित एन्क्रिप्शन (RSA)



असममित एन्क्रिप्शन कुंजियों की एक जोड़ी (सार्वजनिक/निजी) का उपयोग करता है। इसका उपयोग सुरक्षित डेटा ट्रांसमिशन के लिए किया जाता है:



<?php// कुंजी उत्पादन$config = [    'private_key_bits' => 2048,    'private_key_type' => OPENSSL_KEYTYPE_RSA,                    

अनुशंसाएँ