क्या कुछ स्ट्रिंग को डिक्रिप्ट करना संभव है जो पहले जावा में SHA-1 एल्गोरिदम के साथ एन्क्रिप्ट किया गया था?जावा में sha1-एन्क्रिप्टेड स्ट्रिंग को डिक्रिप्ट करने के लिए कैसे करें
उत्तर
SHA1 cryptographic hash function है, और संपूर्ण बिंदु यह है कि आप इसे पूर्ववत नहीं कर सकते हैं। यदि हैश को पीछे हटाना संभव था (किसी दिए गए हैश के लिए इनपुट ढूंढें), तो यह उपयोगी नहीं होगा। यदि आपको कुछ एन्क्रिप्ट करना है और बाद में इसे डिक्रिप्ट करना है, तो आपको encryption functionAES या RSA जैसे उपयोग करना चाहिए।
हालांकि, बहुत सरल इनपुट के लिए इनपुट क्या था और यह जांच कर crack the hash function संभव हो सकता है कि हैश एक जैसा है या नहीं।
उदाहरण पायथन कोड:
def crack_hash(hash_to_crack, hash_function, list_of_guesses):
# Try to hash everything in our guess list
for guess in list_of_guesses:
new_hash = hash_function(guess)
# if the hashes match, we found it
if new_hash == hash_to_crack:
return guess
# If none of them match, give up
return None
बेशक
, यदि आप वास्तव में कुशलता से हैश दरार, John the Ripper या Hashcat की तरह सॉफ्टवेयर का उपयोग कर चाहते हैं शायद अपने सबसे अच्छे शर्त है। ध्यान दें कि यह आम तौर पर पासवर्ड पर काम करता है क्योंकि वे अनुमानित और कम अनुमानित होते हैं, लेकिन इनपुट बढ़ने के साथ ही कठिनाई बढ़ जाती है। आप प्रत्येक SHA-1 हैश को 6-वर्ण इनपुट के साथ मिनटों में क्रैक कर सकते हैं, जबकि 16 वर्णों वाले एक को क्रैक करने से औसत पर ट्रिलियन वर्ष लगेंगे।
इस विधि को एक उचित आकार की सूची के साथ अंतरिक्ष और समय की अश्लील मात्रा की आवश्यकता होगी। टाइम-मेमोरी ट्रेडऑफ लागू करने के लिए एक [इंद्रधनुष तालिका] (http://en.wikipedia.org/wiki/Rainbow_table) का उपयोग करने के लिए एक और व्यावहारिक विकल्प है। यह विधि नमकीन हैंश के लिए बेकार है, हालांकि – jsvk
@jsvk - मैं यह नहीं कह रहा कि यह एक अच्छा विचार है। असल में, मैं उम्मीद कर रहा था कि उदाहरण यह बताएगा कि यह कितना व्यर्थ है जब तक कि आपके पास अनुमान लगाने के लिए कोई अच्छा विचार न हो। इसे बेहतर किया जा सकता है, लेकिन वास्तव में, कोई भी अपना पासवर्ड क्रैकर का उपयोग नहीं करता है - और निश्चित रूप से कोई भी पायथन में लिखा नहीं है;) –
नहीं, यह संभव नहीं है, क्योंकि SHA-1 एक हैश है - यह एक तरह का टिकट है। यदि आप एक स्ट्रिंग को क्रिप्ट और डिक्रिप्ट करना चाहते हैं तो आपको कुछ एन्क्रिप्शन एल्गोरिदम का उपयोग करना होगा जो एन्क्रिप्टेड डेटा जेनरेट करने के लिए कुंजी का उपयोग करता है। फिर आप डेटा एन्क्रिप्ट कर सकते हैं और इसे सफलतापूर्वक डिक्रिप्ट करने के बाद। उदाहरण के लिए एईएस। आप एईएस के बारे में here
संक्षिप्त उत्तर: यह असंभव है।
क्योंकि पीएचओएनएचओएल सिद्धांत द्वारा SHA-1 cryptographic hash function है, यह गणितीय रूप से विपरीत है। केवल 2 संभव SHA-1 हैश हैं। चूंकि संभावित इनपुट तारों की असीमित संख्या होती है, इसलिए टकराव होना चाहिए (एक ही मान के लिए हैश एकाधिक इनपुट)। आम तौर पर, ऐसा कोई तरीका नहीं है कि आप जान सकें कि इनमें से कौन सा तार मूल इनपुट था।
हालांकि, असली दुनिया तार पूरी तरह मनमाने ढंग से नहीं हैं। यदि आप अपनी इनपुट स्ट्रिंग के बारे में कुछ जानकारी जानते हैं (उदा। कि यह 5 वर्णों से कम लंबा था), उच्च संभावना के साथ, इनपुट अद्वितीय है। दुर्भाग्य से आपके लिए, एसएचए -1 जैसे हैश फ़ंक्शन जानबूझकर कम्प्यूटेशनल रूप से उलटा करने के लिए अक्षम हैं। (एसएचए -1 पर सैद्धांतिक हमले हैं, लेकिन मुझे नहीं लगता कि वर्तमान में किसी भी व्यवहार्य के करीब भी माना जाता है।)
तो यदि आपको हैश डेटा पुनर्प्राप्त करने की आवश्यकता है, तो आपको ब्रूट फोर्स का उपयोग करना होगा: प्रत्येक को SHA-1ing आज़माएं n से कम लंबाई की स्ट्रिंग, और देखें कि हैश मैचों से मेल खाता है या नहीं। लेकिन एन तक लंबाई के बहुत से तार हैं, इसलिए यह जल्दी से अक्षम हो जाता है।
ब्रह्मांड के अंत से पहले हैश किए गए डेटा को पुनर्प्राप्त करने का एक संभावित तरीका है। आपकी एकमात्र आशा है कि rainbow tables जैसे अधिक परिष्कृत विधि का उपयोग करना है। यह केवल काम करेगा यदि आप जानते हैं कि आपकी मूल स्ट्रिंग बहुत कम थी (~ 15 वर्णों से कम)। यहां तक कि छोटे तारों के लिए, तालिका को पूर्व-गणना करने में लंबा समय लगेगा (और डिस्क स्पेस के गीगाबाइट)।
कृपया अपडेट करें: यह बहुत अच्छा है, मुझे केवल एल्गोरिदम की आवश्यकता है। [sha1-decrypter] (http://www.stringfunction.com/sha1-decrypter.html) उस पृष्ठ का लिंक है जहां आप ऑनलाइन डिक्रिप्टर –
@VineetVerma पा सकते हैं: यह एक डिक्रिप्टर नहीं है; यह एक रिवर्स लुकअप है। यह कोड अनिवार्य रूप से उपयोग करता है, 'मानचित्र
- 1. पीडीएफ फाइलों को एन्क्रिप्ट/डिक्रिप्ट करने के लिए जावा एपीआई
- 2. जावा: स्ट्रिंग को प्रारंभ करने के लिए कैसे करें []?
- 3. HMACSHA1 से एन्क्रिप्टेड स्ट्रिंग को कैसे डिक्रिप्ट करें?
- 4. डिक्रिप्ट स्ट्रिंग क्रिप्टो
- 5. जेबबर अनुरोधों को डिक्रिप्ट करने
- 6. जावा में स्ट्रिंग को कैसे कंप्रेस करें?
- 7. मानचित्र में स्ट्रिंग को पार्स करने के लिए कैसे करें
- 8. अनगिनत JSON स्ट्रिंग को पार्स करने के लिए कैसे करें
- 9. जावा में एक स्ट्रिंग को SOAPMessage में कनवर्ट करने के लिए कैसे करें?
- 10. निजी कुंजी के साथ स्ट्रिंग को एन्क्रिप्ट कैसे करें और सार्वजनिक कुंजी के साथ डिक्रिप्ट करें?
- 11. जावा: किसी भी ऑब्जेक्ट को डेटा के स्ट्रिंग प्रस्तुति में कनवर्ट करने के लिए कैसे करें
- 12. मेरे डेटा को एन्क्रिप्ट/डिक्रिप्ट करने के लिए कहां?
- 13. जावा में फैक्ट्रियों को पैकेज करने के लिए कैसे करें
- 14. फ़ाइलों को एन्क्रिप्ट/डिक्रिप्ट करने के लिए रिजेंडेल का उपयोग
- 15. हेक्स स्ट्रिंग को जावा में फ़्लोट करने के लिए कैसे परिवर्तित करें?
- 16. खींचा स्ट्रोक के साथ डेटा डिक्रिप्ट करने के लिए एल्गोरिदम
- 17. जावा में स्ट्रिंग के सरणी को प्रिंट/लॉग कैसे करें?
- 18. md5() में एन्क्रिप्टेड पासवर्ड को डिक्रिप्ट कैसे करें?
- 19. स्ट्रिंग को साफ़ करने के लिए कैसे करें?
- 20. एईएस का उपयोग करते हुए openssl कमांड के साथ एन्क्रिप्टेड जावा में फ़ाइल को डिक्रिप्ट करने के लिए कैसे?
- 21. जावा स्ट्रिंग को बाइट सरणी में कनवर्ट करें
- 22. जावा में UTF-8 में स्ट्रिंग को क्रमबद्ध करने के लिए DOMImplementationLS क्रमबद्ध करें
- 23. जावा: जावा ऑब्जेक्ट को जावा ऑब्जेक्ट में जावा में स्ट्रिंग ऑब्जेक्ट में कैसे परिवर्तित करें?
- 24. अक्षरों को अनदेखा करने के लिए जावा स्ट्रिंग खोज
- 25. जावा स्ट्रिंग में उद्धरण कैसे दर्ज करें?
- 26. जावा में स्ट्रिंग प्रारूप में दिनांक को कैसे क्रमबद्ध करें?
- 27. एक जावा फ़ाइल को संकलित करने के लिए कैसे करें
- 28. .NET मानक प्रारूप स्ट्रिंग को Excel प्रारूप स्ट्रिंग में परिवर्तित करने के लिए कैसे करें
- 29. स्ट्रिंग को एक स्ट्रिंग में कनवर्ट करने के लिए कैसे करें जिसमें प्रत्येक वर्ण
- 30. जावा में एक स्ट्रिंग को सॉर्ट करें
SHA-1 एक हैश है, एन्क्रिप्शन एल्गोरिदम नहीं है। यदि आप अपने SHA-1 हैश से एक स्ट्रिंग निकालने का प्रयास कर रहे हैं, शुभकामनाएं। इसे प्री-इमेज अटैक कहा जाता है। – Mysticial
यह _possible_ है, लेकिन कम्प्यूटेशनल संसाधनों और समय की आवश्यकता होगी, क्योंकि sha1-एन्क्रिप्टेड डेटा एन्क्रिप्टेड होने के बाद डिक्रिप्ट करने के लिए नहीं है। – jsvk
मुझे लगता है कि सवाल यह होना चाहिए कि sha1 को डिक्रिप्ट करना कितना कम्प्यूटेशनल रूप से गहन है। जावा को इसके साथ क्या करना है? यदि आपके पास एक अच्छा एल्गोरिदम है, तो आप इसे कोड करने के लिए किसी भी भाषा का उपयोग कर सकते हैं। –