डेटा के SHA-1 हैश बनाने के लिए कितनी देर तक और कितनी प्रोसेसिंग पावर की आवश्यकता है? क्या यह मूल डेटा आकार के आधार पर बहुत अलग है? एक मानक HTML फ़ाइल के हैश उत्पन्न करने से स्ट्रिंग "blah" से काफी अधिक समय लगेगा? सी ++, जावा, और PHP कैसे गति से तुलना करेंगे?SHA-1 कितने समय तक हैश बनाने के लिए लेता है?
उत्तर
आपने बहुत सारे प्रश्न पूछे हैं, इसलिए उम्मीद है कि मैं बदले में प्रत्येक को जवाब देने का प्रयास कर सकता हूं।
SHA-1 (और कई अन्य हैंश क्रिप्टोग्राफिक रूप से मजबूत होने के लिए डिज़ाइन किए गए हैं) डेटा के निश्चित आकार वाले ब्लॉक में एन्क्रिप्शन या डिक्रिप्शन रूटीन के दोहराए गए एप्लिकेशन पर आधारित होते हैं। नतीजतन, एक लंबी स्ट्रिंग के हैश मान की गणना करते समय, एल्गोरिदम एक छोटी स्ट्रिंग के हैश मान की गणना करने के अनुपात में आनुपातिक रूप से अधिक समय लेता है। गणितीय रूप से, हम कहते हैं कि SHA-1 का उपयोग करते समय रनटाइम हैश की लंबाई स्ट्रिंग एन है (एन)। नतीजतन, एक HTML दस्तावेज़ हैशिंग को "blah" स्ट्रिंग से अधिक समय लेना चाहिए, लेकिन केवल आनुपातिक रूप से। यह हैश करने के लिए नाटकीय रूप से लंबा नहीं लगेगा।
गति के मामले में C++ की तुलना, जावा, और PHP का सवाल है, यह खतरनाक क्षेत्र है और मेरा उत्तर विस्फोट होने की संभावना है, लेकिन सामान्य रूप से कहें सी ++ थोड़ा तेजी से जावा, जो थोड़ा तेज पीएचपी से है की तुलना में है। उन भाषाओं में से एक में लिखा गया एक अच्छा हैश कार्यान्वयन दूसरों को नाटकीय रूप से बेहतर प्रदर्शन कर सकता है अगर वे अच्छी तरह से लिखे गए नहीं हैं। हालांकि, आपको इसके बारे में चिंता करने की आवश्यकता नहीं है। इसे आम तौर पर अपने स्वयं के हैश फ़ंक्शंस, एन्क्रिप्शन रूटीन या डिक्रिप्शन रूटीन को लागू करने का एक बुरा विचार माना जाता है क्योंकि वे अक्सर side-channel attacks के लिए कमजोर होते हैं जिसमें एक हमलावर कार्यान्वयन में बग का उपयोग करके आपकी सुरक्षा को तोड़ सकता है जो प्रायः अनुमानित होना मुश्किल होता है। यदि आप एक अच्छा हैश फ़ंक्शन का उपयोग करना चाहते हैं, तो प्री-लिखित संस्करण का उपयोग करें। यह आपके द्वारा किए गए किसी भी चीज़ की तुलना में तेज़, सुरक्षित और कम त्रुटि-प्रवण होने की संभावना है।
अंत में, मैं सुझाव देता हूं कि SHA-1 का उपयोग न करें। SHA-1 ने क्रिप्टोग्राफिक कमजोरियों को जाना है और आपको SHA-256 जैसे मजबूत हैश एल्गोरिदम का उपयोग करने पर विचार करना चाहिए।
आशा है कि इससे मदद मिलती है!
क्या फिंगरप्रिंटिंग फ़ाइलों के लिए SHA-1 पर्याप्त होगा? सिर्फ यह पूछना कि मैं क्या करना चाहता हूं। इसके अलावा, पासवर्ड के संबंध में मैंने कुछ प्रणालियों में नमक का उपयोग किया है और कुछ एल्गोरिदम के कुछ उल्लेख भी हैं जिन्हें बीएच कहा जाता है। –
यदि आपका लक्ष्य केवल आकस्मिक परिवर्तनों का पता लगाने के लिए एक फिंगरप्रिंट प्राप्त करना है (और कहें, जानबूझकर छेड़छाड़ का पता लगाने के लिए), तो SHA-1 ठीक होना चाहिए (जैसा कमजोर एमडी 5 होगा)। हालांकि, यदि आप पासवर्ड सिस्टम बनाने की कोशिश करने के लिए हैश का उपयोग कर रहे थे, तो आपको कुछ अन्य एल्गोरिदम का उपयोग करने पर विचार करना चाहिए। – templatetypedef
यह उन पंक्तियों के साथ है। मैं फ़ाइल हैप्लिकेट से बचने के लिए एक हैश का उपयोग करना चाहता हूं या यह देखने के लिए कि कोई फ़ाइल संशोधित की गई है या नहीं। मैं देखूंगा कि बाद में पासवर्ड के बारे में क्या किया जा सकता है। –
क्रिप्टोग्राफिक हैश फ़ंक्शंस की "गति" को अक्सर "clock cycles प्रति बाइट" में मापा जाता है। स्वीकार्य रूप से पुरानी तुलना के लिए यह page देखें - आप देख सकते हैं कि कार्यान्वयन और वास्तुकला परिणाम को कैसे प्रभावित करती है। नतीजे न केवल एल्गोरिदम के इस्तेमाल के कारण बड़े पैमाने पर भिन्न होते हैं, बल्कि वे आपके प्रोसेसर आर्किटेक्चर, कार्यान्वयन की गुणवत्ता और कार्यान्वयन पर कुशलतापूर्वक हार्डवेयर का उपयोग करते हैं। यही कारण है कि कुछ कंपनियां हार्डवेयर बनाने में विशेषज्ञ हैं, विशेष रूप से यथासंभव कुशल क्रिप्टोग्राफिक एल्गोरिदम प्रदर्शन करने के सटीक उद्देश्य के लिए उपयुक्त हैं।
एक अच्छा उदाहरण SHA-512 है, हालांकि यह SHA-256 की तुलना में बड़े डेटा हिस्सों पर काम करता है, ऐसा लगता है कि यह आमतौर पर छोटे इनपुट पर काम कर SHA-256 से धीमा प्रदर्शन करना चाहिए - लेकिन SHA-512 विशेष रूप से है 64 बिट प्रोसेसर के लिए उपयुक्त है और कभी-कभी SHA-256 से भी बेहतर प्रदर्शन करता है।
सभी आधुनिक हैश एल्गोरिदम डेटा के निश्चित आकार के ब्लॉक पर काम कर रहे हैं। वे एक ब्लॉक पर निश्चित संख्यात्मक निर्धारिती संचालन करते हैं, और अंततः परिणाम प्राप्त करने तक प्रत्येक ब्लॉक के लिए ऐसा करते हैं। इसका मतलब यह भी है कि आपका इनपुट जितना लंबा होगा, उतना ही लंबा ऑपरेशन होगा। विशेषताओं से समझाया गया है कि हम यह समझ सकते हैं कि ऑपरेशन की लंबाई किसी संदेश के इनपुट आकार के लिए सीधे आनुपातिक है। गणितीय रूप से कंप्यूटर-वैज्ञानिक रूप से हम इसे ओ (एन) ऑपरेशन के रूप में सिक्का करते हैं, जहां एन संदेश का इनपुट आकार है, क्योंकि templatetypedef पहले से ही इंगित करता है।
आपको प्रोग्रामिंग भाषा की अपनी पसंद को प्रभावित करने की गति को गति नहीं देना चाहिए, भाषा के बावजूद सभी आधुनिक हैश एल्गोरिदम वास्तव में वास्तव में तेज़ हैं। हालांकि सी-आधारित कार्यान्वयन जावा से थोड़ा बेहतर होगा, जो शायद PHP की तुलना में थोड़ा तेज होगा, मैं अभ्यास में शर्त लगाता हूं कि आप अंतर नहीं जान पाएंगे।
@ जेम्स पोल्सन: यदि आप सिर्फ फिंगरप्रिंट करना चाहते हैं फ़ाइल और इसे सुरक्षित होने की आवश्यकता नहीं है, फिर एक [सीआरसी] (http://en.wikipedia.org/wiki/CRC-32) चेकसम एसएचए -1 या किसी अन्य क्रिप्टोग्राफिक हैश फ़ंक्शन का उपयोग करने से भी तेज है। – emboss
हां! आप ग्रह पर सबसे बड़े तकनीकी मूर्खों के रूप में खुद को बाहर जाने से पहले सोचेंगे कि एफबीआई ने कुछ प्रश्न पूछे हैं आरई समस्या का आकार और स्वचालित दृष्टिकोण निष्पादित करने का समय! मैं सी बनाम जावा स्केल को लगभग 3 एक्स पर रखूंगा। नंगे धातु के करीब जितना अधिक आप पी-कोड आपको दर्द देते हैं। – RocketRoy
SHA-1 64 बाइट्स के हिस्सों से डेटा को संसाधित करता है। CPU समय की लंबाई n बाइट्स की फ़ाइल की आवश्यकता है, इस प्रकार लगभग n/64 बार एक बार संकीर्ण करने के लिए आवश्यक CPU समय के बराबर है। एक छोटी स्ट्रिंग के लिए, आपको पहले स्ट्रिंग को बाइट्स के अनुक्रम में परिवर्तित करना होगा (बाइट्स पर SHA-1 कार्य, वर्णों पर नहीं); स्ट्रिंग "blah"
4 या 8 बाइट बन जाएगा (यदि आप क्रमशः यूटीएफ -8 या यूटीएफ -16 का उपयोग करते हैं) तो इसे एक सिंगल खंड के रूप में धोया जाएगा। ध्यान दें कि वर्णों से बाइट्स में रूपांतरण को हैशिंग से अधिक समय लग सकता है।
का उपयोग करते हुए शुद्ध जावा SHA-1 sphlib से कार्यान्वयन, मेरे पीसी (x86 Core2, 2.4 GHz, 64-बिट मोड) पर, मैं लंबे समय से संदेशों के 132 MB/s एक बैंडविड्थ पर (हैश कर सकते हैं कि एक CPU उपयोग कर रहा है कोर)। ध्यान दें कि यह एक सामान्य हार्ड डिस्क की गति से अधिक है, इसलिए जब बड़ी फाइल है तो संभावना है कि डिस्क बाधा होगी, सीपीयू नहीं: फाइल को हैश के लिए आवश्यक समय पढ़ने के लिए आवश्यक समय होगा डिस्क से फ़ाइल।
(इसके अलावा, मूल कोड सी में लिखे का उपयोग कर, SHA-1 गति के लिए 330 MB/s ऊपर जाता है।)
SHA-256 का एक शुद्ध जावा कार्यान्वयन SHA-1 की तुलना में व्यापक रूप से अधिक सुरक्षित माना जाता है, और एसएचए -256 मेरे पीसी पर 85 एमबी/एस पर है, जो अभी भी काफी तेज है। 2011 तक, एसएचए -1 की सिफारिश नहीं की जाती है।
- 1. क्रिप्टोग्राफिक हैश "abc" के SHA1 हैश मेथेमेटिका
- 2. मुझे बूस्ट SHA1 हैश तक कैसे पहुंचाया जाना चाहिए?
- 3. Convert base64'd हेक्स के लिए SHA1 हैश हैश
- 4. कितने हैश बाल्टी
- 5. एचएमसी SHA1 हैश - सी # रूबी
- 6. "रेक मार्ग" कितने समय तक चलाना चाहिए?
- 7. लंबे समय तक एक जोड़ी के लिए हैश फ़ंक्शन?
- 8. पर्ल कोर में मॉड्यूल कितने समय तक रहा है?
- 9. एक धार फ़ाइल से SHA1 हैश निकालें
- 10. बेस 64 एक sha1/sha256 हैश क्यों?
- 11. क्या find_or_create_by_ है जो रेल में हैश लेता है?
- 12. यूनिट परीक्षण कितना अतिरिक्त समय लेता है?
- 13. निर्धारित करें कि अब तक कितने समय तक PHP को निष्पादित किया गया है
- 14. तारों के लिए लगातार समय हैश?
- 15. एडब्ल्यूएस क्लाउडवॉच में मेट्रिक्स डेटा कितने समय तक बनाए रखा
- 16. अपाचे सत्र समय बनाने बाहर लंबे समय तक
- 17. उन्हें खराब विकल्प बनाने के लिए कितने धागे लगते हैं?
- 18. session_start() बहुत लंबा समय लेता है
- 19. कितने समय क्षेत्र हैं?
- 20. एक्स-वाई-जेड तिथि तक कितने दिन?
- 21. समय-समय पर अद्यतन/INSERT कुछ सेकंड लेता है
- 22. SHA256 हैश कितना समय है?
- 23. टीडीसेटसेट के लुकअप और ढूंढने के तरीके कितने समय तक रहे हैं?
- 24. ग्रहण अनुक्रमण हमेशा के लिए लेता है
- 25. सी ++ में कितने समय तक कार्य करना है, इसका सबसे अच्छा तरीका क्या है?
- 26. स्क्रिप्ट उनके फ़ाइल नाम के sha1() हैश का उपयोग करके फ़ाइलों का नाम बदलने के लिए
- 27. एक आईडी के रूप में sha1 हैश के केवल 64-बिट्स का उपयोग करने के लिए ठीक है?
- 28. Git टैग सूची को प्रदर्शित SHA1 प्रतिबद्ध हैश
- 29. मैं एक फाइल पर SHA1 हैश कैसे करूं?
- 30. हैश टेबल लुकअप समय
"कितना लंबा" पूरी तरह से * उस मंच पर निर्भर है जिस पर आप इसे चला रहे हैं। –
कृपया पढ़ें http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work – Joe
आप हैश का उपयोग किसके लिए कर रहे हैं? –