का उपयोग OpenSSL के EVP interface (निम्नलिखित OpenSSL 1.1 के लिए है):
#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>
#include <openssl/evp.h>
bool computeHash(const std::string& unhashed, std::string& hashed)
{
bool success = false;
EVP_MD_CTX* context = EVP_MD_CTX_new();
if(context != NULL)
{
if(EVP_DigestInit_ex(context, EVP_sha256(), NULL))
{
if(EVP_DigestUpdate(context, unhashed.c_str(), unhashed.length()))
{
unsigned char hash[EVP_MAX_MD_SIZE];
unsigned int lengthOfHash = 0;
if(EVP_DigestFinal_ex(context, hash, &lengthOfHash))
{
std::stringstream ss;
for(unsigned int i = 0; i < lengthOfHash; ++i)
{
ss << std::hex << std::setw(2) << std::setfill('0') << (int)hash[i];
}
hashed = ss.str();
success = true;
}
}
}
EVP_MD_CTX_free(context);
}
return success;
}
int main(int, char**)
{
std::string pw1 = "password1", pw1hashed;
std::string pw2 = "password2", pw2hashed;
std::string pw3 = "password3", pw3hashed;
std::string pw4 = "password4", pw4hashed;
hashPassword(pw1, pw1hashed);
hashPassword(pw2, pw2hashed);
hashPassword(pw3, pw3hashed);
hashPassword(pw4, pw4hashed);
std::cout << pw1hashed << std::endl;
std::cout << pw2hashed << std::endl;
std::cout << pw3hashed << std::endl;
std::cout << pw4hashed << std::endl;
return 0;
}
का लाभ यह उच्च स्तरीय इंटरफ़ेस यह है कि आपको बस EVP_sha256()
अन्य डायजेस्ट के फ़ंक्शन के साथ कॉल करने की आवश्यकता है, उदा। एक अलग डाइजेस्ट का उपयोग करने के लिए EVP_sha512()
। तो यह कुछ लचीलापन जोड़ता है।
इसके अलावा एक बोनस के रूप में, यह अगर यह बाइनरी में उत्पादन हैश होगा अच्छा होगा :) –
मैं वहाँ एक नया उत्तर पोस्ट जो बताते हैं कि आप क्या चाहते। यदि आप उत्तर में मदद करते हैं तो आप इस प्रश्न को डुप्लिकेट के रूप में बंद कर सकते हैं। – AndiDog
@AndiDog - सब कुछ सही काम करने लगता है, सिवाय इसके कि संकलक कार्यों को नहीं ढूंढ सकता है। इसे SHA1 का संदर्भ भी नहीं मिला। 'SHA256_Final' जैसे SHA256 फ़ंक्शंस में से कोई भी नहीं मिला। सुनिश्चित नहीं हैं कि मैं गलत क्या कर रहा है, मैं #include "openssl/sha.h" शामिल है और मैं संकलन मैं/opt/ssl/शामिल/एल/opt/ssl/lib दौरान शामिल हैं और पुस्तकालय शामिल/ –