मैं इस तथ्य के आधार पर आपका बिंदु देखता हूं कि आप सामाजिक सुरक्षा संख्याओं को छिपाने की कोशिश कर रहे हैं। यदि कोई जानता है कि आप एक अद्वितीय पहचानकर्ता बनाने के लिए एसएसएन पर SHA1HASH का उपयोग कर रहे हैं, तो बस सभी एसएसएन संख्याओं की एक त्वरित सूची उत्पन्न कर सकते हैं, उन्हें SHA1HASH, फिर रिकॉर्ड में व्यक्ति के एसएसएन स्वचालित रूप से तुलना करें। इससे भी बदतर, वे इन सभी को हैश लुकअप टेबल में प्रीजेनरेट कर सकते हैं, और प्रत्येक एसएसएन के लिए 1 हैश की कुंजी है। इसे हैश लुकअप टेबल कहा जाता है, और अधिक जटिल रूपों को इंद्रधनुष सारणी कहा जाता है।
यही कारण है कि हैशिंग की दूसरी विशेषता का आविष्कार किया गया था। इसे नमकीन कहा जाता है। साल्टिंग मूल रूप से यह है; आप नमक बनाते हैं, फिर नमक का उपयोग करके अपने डेटा को संशोधित करें। उदाहरण के लिए, कहें कि आपके पास एसएसएन 123-45-678 9 था। आप "MOONBEAM" स्ट्रिंग के साथ इसे नमक कर सकते हैं। हैशिंग के लिए आपकी नई स्ट्रिंग "123-45-6789MOONBEAM"
अब, अगर कोई जानता है कि आप अपनी अनूठी आईडी उत्पन्न करने के लिए एसएसएन को परेशान कर रहे हैं, तो वे अभी भी नमक को नहीं जानते हैं जिसका आप उपयोग करेंगे, और इसलिए सभी एसएसएन की सूची पूर्व-हैशिंग करके और आपकी आईडी की तुलना करके मूल एसएसएन प्राप्त करने में असमर्थ हैं। हालांकि, उपयोगकर्ता एसएसएन अपने आईडी के साथ मेल खाता है या नहीं, यह देखने के लिए, आप हमेशा उपयोगकर्ता के एसएसएन ले सकते हैं, नमक का उपयोग कर सकते हैं और एसएसएन + एसएएलटी को फिर से चला सकते हैं।
अंत में, यदि आप सब कुछ के लिए केवल 1 नमक का उपयोग करते हैं, और नमक को देखने में सक्षम होने के बजाय इसे गुप्त रखें, और एसएसएन वृद्धि को चलाकर संबंधित एसएसएन उत्पन्न करें + नमक 100 मिलियन बार और मैच चुनना, उनके पास है एसएसएन को पुनः प्राप्त करने के लिए बहुत अधिक काम करने के लिए। ऐसा इसलिए है क्योंकि 100 मिलियन एसएसएन संख्याओं में अपेक्षाकृत कम मात्रा में एन्ट्रॉपी होती है। (10^9 संयोजन)। अपने नमक जोड़ने और यह गुप्त रखने के बजाय सिर्फ
SHA1HASH(111-11-1111) -> check hash match
SHA1HASH(111-11-1112) -> check hash match
SHA1HASH(111-11-1113) -> check hash match
चलाकर वे
SHA1HASH(111-11-1111a) -> check hash match
SHA1HASH(111-11-1111b) -> check hash match
SHA1HASH(111-11-1111c) -> check hash match
...
SHA1HASH(111-11-1111azdfg) -> check hash match
SHA1HASH(111-11-1111azdfh) -> check hash match
....
SHA1HASH(111-11-1111zzzzzzzzzzzzzzzz) -> check hash match
SHA1HASH(111-11-1112a) -> check hash match
SHA1HASH(111-11-1112b) -> check hash match
चलाने के लिए .. और इतने पर जब तक वे अंततः पर
SHA1HASH(123-45-6789MOONBEAM) -> check hash match
को पाने के लिए होता है आखिरकार उन्होंने एसएसएन + एसएएलटी
को क्रैक करने का प्रबंधन किया था, वे यह भी नहीं जानते कि कितने अक्षर एल ओएनजी आपका नमक है तो यह 10^(आपके नमक के पात्रों की संख्या) 1 एसएसएन प्राप्त करने के लिए उनके लिए अधिक काम करता है, अकेले ही पूरी टेबल प्राप्त करें।
इस प्रश्न का बेहतर शीर्षक "क्या हैश आसानी से डिक्रिप्ट किया जा सकता है?" –
किसने कहा कि आप पीछे की तरफ जा सकते हैं? – kennytm
क्या आप पिछड़े जाने की कोशिश कर रहे थे? क्या आपको एक ऐसा कार्य मिला है जो वास्तव में * पीछे * जाता है? –