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

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

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

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

C++ में क्रिप्टोग्राफी: एन्क्रिप्शन और हैशिंग के सिद्धांत से व्यवहार तक



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



मुख्य क्रिप्टोग्राफिक अवधारणाएँ

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

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


1. C++ में OpenSSL के साथ कार्य

OpenSSL एक क्रॉस-प्लेटफ़ॉर्म C लाइब्रेरी है जो लिंकिंग के माध्यम से उपलब्ध है। स्थापना: sudo apt install libssl-dev (Linux) या Windows के लिए vcpkg/conan के माध्यम से।



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

#include <iostream>#include <string>#include <openssl/evp.h>#include <openssl/rand.h>

std::string 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::string ciphertext(plaintext.size() + 16, '\\0'); int len = 0, ciphertext_len = 0; EVP_EncryptUpdate(ctx, reinterpret_cast<unsigned char*>(&ciphertext[0]), &len, reinterpret_cast<const unsigned char*>(plaintext.data()), plaintext.size()); ciphertext_len = len; EVP_EncryptFinal_ex(ctx, reinterpret_cast<unsigned char*>(&ciphertext[ciphertext_len]), &len); ciphertext_len += len; ciphertext.resize(ciphertext_len); EVP_CIPHER_CTX_free(ctx); return ciphertext;}

int main() { unsigned char key[32], iv[16]; RAND_bytes(key, sizeof(key)); // यादृच्छिक कुंजी उत्पन्न करना RAND_bytes(iv, sizeof(iv));

std::string data = "गुप्त संदेश"; std::string encrypted = aes_encrypt(data, key, iv); std::cout << "एन्क्रिप्टेड: " << encrypted.size() << " बाइट" << std::endl; return 0;}


OpenSSL के माध्यम से SHA-256 हैशिंग

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

std::string sha256(const std::string& str) { unsigned char hash[SHA256_DIGEST_LENGTH]; SHA256_CTX sha256; SHA256_Init(&sha256); SHA256_Update(&sha256, str.c_str(), str.size()); 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::cout << "SHA-256: " << sha256("Hello, Crypto!") << std::endl; return 0;}


2. Crypto++ लाइब्रेरी (C++ शुद्ध कार्यान्वयन)

Crypto++ (cryptopp) बाहरी निर्भरता के बिना एक पूर्ण C++ लाइब्रेरी है। स्थापना: sudo apt install libcrypto++-dev या cryptopp.com से डाउनलोड करें।



उदाहरण: Crypto++ के साथ RSA एन्क्रिप्शन

#include <iostream>#include <string>#include <cryptopp/rsa.h>#include <cryptopp/osrng.h>#include <cryptopp/base64.h>

int main() { using namespace CryptoPP;

AutoSeededRandomPool rng; Inve

अनुशंसाएँ