C++ में क्रिप्टोग्राफी: एन्क्रिप्शन और हैशिंग — पूर्ण गाइड

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

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

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

C++ में क्रिप्टोग्राफी: एन्क्रिप्शन और हैशिंग — पूर्ण गाइड



क्रिप्टोग्राफी आधुनिक अनुप्रयोगों की सुरक्षा की मूलभूत नींव है। C++ में, डेवलपर्स के पास शक्तिशाली लाइब्रेरी उपलब्ध हैं जो डेटा के एन्क्रिप्शन, डिक्रिप्शन और हैशिंग को लागू करने की अनुमति देती हैं। इस लेख में, हम दो लोकप्रिय लाइब्रेरी: OpenSSL और Crypto++ पर विस्तार से चर्चा करेंगे, साथ ही प्रमुख अवधारणाओं: सममित एन्क्रिप्शन (AES), असममित एन्क्रिप्शन (RSA) और क्रिप्टोग्राफ़िक हैश फ़ंक्शन (SHA-256) को समझेंगे।



1. क्रिप्टोग्राफी की बुनियादी अवधारणाएँ



कोड पर जाने से पहले, बुनियादी शब्दों को समझना महत्वपूर्ण है:

  • सममित एन्क्रिप्शन — एन्क्रिप्शन और डिक्रिप्शन दोनों के लिए एक ही कुंजी का उपयोग किया जाता है। उदाहरण: AES, DES, ChaCha20।
  • असममित एन्क्रिप्शन — कुंजियों की एक जोड़ी: सार्वजनिक कुंजी (एन्क्रिप्शन के लिए) और निजी कुंजी (डिक्रिप्शन के लिए)। उदाहरण: RSA, ECC।
  • हैश फ़ंक्शन — डेटा का एक निश्चित लंबाई की स्ट्रिंग में अपरिवर्तनीय रूपांतरण। उदाहरण: SHA-256, MD5 (पुराना), BLAKE2।
  • सॉल्ट (salt) — रेनबो टेबल से सुरक्षा के लिए हैशिंग से पहले पासवर्ड में जोड़ा गया यादृच्छिक डेटा।


2. C++ में OpenSSL लाइब्रेरी



OpenSSL एक क्रॉस-प्लेटफ़ॉर्म ओपन-सोर्स लाइब्रेरी है जो SSL/TLS प्रोटोकॉल और क्रिप्टोग्राफ़िक एल्गोरिदम का एक विस्तृत सेट लागू करती है। C++ में इसके साथ काम करने के लिए, हेडर फ़ाइलों को शामिल करना और libssl और libcrypto लाइब्रेरी से लिंक करना आवश्यक है।



उदाहरण 1: OpenSSL के साथ SHA-256 हैशिंग



#include <iostream>#include <openssl/sha.h>#include <cstring>

std::string sha256(const std::string& input) { unsigned char hash[SHA256_DIGEST_LENGTH]; SHA256_CTX sha256; SHA256_Init(&sha256); SHA256_Update(&sha256, input.c_str(), input.length()); SHA256_Final(hash, &sha256);

std::string output; for(int i = 0; i < SHA256_DIGEST_LENGTH; i++) { char buf[3]; sprintf(buf, "%02x", hash[i]); output += buf; } return output;}

int main() { std::string data = "PythonLib - C++ में क्रिप्टोग्राफी"; std::cout << "SHA-256: " << sha256(data) << std::endl; return 0;}


यह कोड SHA256 संदर्भ के बुनियादी उपयोग को प्रदर्शित करता है। फ़ंक्शन SHA256_Init संदर्भ को आरंभ करता है, SHA256_Update डेटा जोड़ता है (स्ट्रीमिंग प्रोसेसिंग के लिए कई बार कॉल किया जा सकता है), और SHA256_Final गणना पूरी करता है और परिणाम लिखता है।



उदाहरण 2: सममित एन्क्रिप्शन AES-256-CBC



#include <iostream>#include <openssl/evp.h>#include <vector>#include <cstring>

std::vector<unsigned char> aes_encrypt(const std::string& plaintext, const unsigned char* key, const unsigned char* iv) { EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new(); EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), nullptr, key, iv);

std::vector<unsigned char> ciphertext(plaintext.size() + EVP_CIPHER_block_size(EVP_aes_256_cbc())); int len = 0; int ciphertext_len = 0;

EVP_EncryptUpdate(ctx, ciphertext.data(), &len, reinterpret_cast<const unsigned char*>(plaintext.c_str()), plaintext.size()); ciphertext_len = len;

EVP_EncryptFinal_ex(ctx, ciphertext.data() + len, &len); ciphertext_len += len; ciphertext.resize(ciphertext_len);

EVP_CIPHER_CTX_free(ctx); return ciphertext;}

int main() { // 256-बिट कुंजी (32 बाइट) और 128-बिट IV (16 बाइट) unsigned char key[32] = "01234567890123456789012345678901"; unsigned char iv[16] = "0123456789012345";

std::string message = "PythonLib के लिए गुप्त डेटा"

अनुशंसाएँ