2011-02-26 15 views
10

क्या कोई मानक लाइब्रेरी या आमतौर पर उपयोग की जाने वाली लाइब्रेरी है जिसका उपयोग लिनक्स पर SHA-512 हैश की गणना के लिए किया जा सकता है?लिनक्स पर सी ++ में एसएचए -512 हैश की गणना कैसे करें?

मैं सी या सी ++ लाइब्रेरी की तलाश में हूं।

उत्तर

11

क्या आपने OpenSSL चेक किया है। मैंने स्वयं इसका उपयोग नहीं किया है लेकिन दस्तावेज़ीकरण का कहना है कि यह इसका समर्थन करता है।

Secure Hash Algorithm (SHA)

BSD लाइसेंस:

यहाँ few more implementations.

उदाहरण कोड

md = EVP_get_digestbyname("sha512"); 
EVP_MD_CTX_init(&mdctx); 
EVP_DigestInit_ex(&mdctx, md, NULL); 
EVP_DigestUpdate(&mdctx, mess1, strlen(mess1)); 
EVP_DigestUpdate(&mdctx, mess2, strlen(mess2)); 
EVP_DigestFinal_ex(&mdctx, md_value, &md_len); 
EVP_MD_CTX_cleanup(&mdctx); 
+4

हे। आपने मुझे इसे हरा दिया क्योंकि "ओपनएसएसएल SHA512 का समर्थन करता है।" केवल 24 वर्ण हैं और उत्तर कम से कम 30 होना चाहिए। –

+0

क्या आप हैश की गणना के लिए उपयोग किए जा सकने वाले फ़ंक्शन के लिए प्रलेखन से लिंक कर सकते हैं? –

+0

उत्तर में जोड़ा गया कोड कोड। – Zimbabao

0

की सूची मैं इस के साथ महान सफलता मिली है है। इसमें SHA-1, SHA-224, SHA-256, SHA-384, और SHA-512 शामिल हैं। इसमें स्वच्छ सहायक कार्य सरल मामलों के लिए चरणों को कम करते हैं:

SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) 

इसमें बहुत सारे प्रदर्शन ट्यूनिंग विकल्प भी हैं।

5

मैं विभिन्न क्रिप्टोग्राफिक उद्देश्यों के लिए Botan का उपयोग कर रहा हूं। इसमें कई प्रकार के एसएचए (-512) एल्गोरिदम हैं।

जब मैं सी ++ क्रिप्टो पुस्तकालयों को देख रहा था तो मुझे Crypto++ भी मिला। बोटान एपीआई की शैली मेरे लिए अधिक सरल थी, लेकिन इन दोनों पुस्तकालयों में ठोस और परिपक्व हैं।

+0

क्या आप जानते हैं कि sha512 दस्तावेज़ Botan के लिए कहां हैं? –

+0

@ ग्रेकसस कई मामलों में कुछ एल्गोरिदम के लिए कोई विशिष्ट दस्तावेज़ नहीं हैं। कारण यह है कि प्रत्येक एल्गोरिदम को फ़िल्टर के रूप में कार्यान्वित किया जाता है जिसे आप दूसरों के समान ही उपयोग कर सकते हैं। यदि आप विशिष्ट मानकों में रुचि रखते हैं, तो विकिपीडिया पर स्वयं एल्गोरिदम देखें क्योंकि कार्यान्वयन कैननिकल होना चाहिए। हेडर में टिप्पणियां भी मदद कर सकती हैं। [मैनुअल] (http://botan.randombit.net/manual/) फ़िल्टर का उपयोग करने के बारे में जानकारी प्रदान करता है। –

4

this code देखें। यह पूरी तरह से पोर्टेबल है और किसी भी अतिरिक्त विन्यास की आवश्यकता नहीं है। केवल एसटीएल पर्याप्त होगा। तुम बस

#include "sha512.hh" 

घोषित करने और उसके बाद का उपयोग कार्यों

sw::sha512::calculate("SHA512 of std::string") // hash of a string, or 
sw::sha512::file(path) // hash of a file specified by its path, or 
sw::sha512::calculate(&data, sizeof(data)) // hash of any block of data 

जब आप चाहें तब की आवश्यकता होगी। उनका वापसी मूल्य std::string