आप जो कर रहे हैं वह "एन्क्रिप्शन" नहीं है, प्रति से; यह "हैशिंग" है। दो के बीच मुख्य अंतर यह है कि एन्क्रिप्शन है है , जबकि हैशिंग किसी भी पहली जगह में मूल संदेश को जानने के अलावा अन्य परिस्थिति में उल्टा करने के लिए बेहद मुश्किल डिज़ाइन किया गया है आसानी से उलटने (बेशक सही कुंजी के साथ),।
सिद्धांत रूप में, हैश एक "यादृच्छिक ओरेकल" का अनुकरण करता है, एक काल्पनिक स्मृति के साथ एक काल्पनिक होम्युकुलस और कोई ऊपरी श्रेणी की सीमा के साथ पूरी तरह से अद्वितीय, पूरी तरह से यादृच्छिक संख्या उत्पन्न करने का एक तरीका है। आप इस छोटे आदमी को एक संदेश देंगे, और दो चीजों में से एक होगा; या तो उसने पहले कभी संदेश नहीं देखा है, जिस स्थिति में वह एक नया रैंडम नंबर जेनरेट करता है और जो आपको डाइजेस्ट के रूप में देता है, या उसने वह गड़बड़ी पहले देखी है, और इसलिए वह याद रखता है और आपको वह नंबर देता है जो उसने उसे देखा था। पहली बार। उस सैद्धांतिक मॉडल में, एक संदेश और इसके पाचन के बीच शून्य संबंध है, और आरएनजी से दो बार दिखाई देने वाले एक भी संख्या के साथ टकराव की कोई संभावना नहीं है।
दुर्भाग्य से, हमारे पास एक आदर्श यादृच्छिक ओरेकल नहीं है; डिजिटल कार्यान्वयन के लिए विचार की व्यावहारिक बाध्यता है, जैसे कि कुशलता से स्टोर करने के लिए ओरेकल की क्षमता और कुशलता से हर संदेश को कभी भी कहीं भी किसी को भी याद किया जाता है, और क्लाइंट की संख्या एक संख्या को स्वीकार करने की क्षमता है जो सैकड़ों या हजारों दशमलव अंक हो सकते हैं। लंबाई में। इसके बजाय, हमारे पास हैश फ़ंक्शंस हैं, जो अपरिवर्तनीय (एक तरफ़ा) गणितीय कार्य हैं जो संदेश पर काम करते हैं, एक स्पष्ट परिवर्तन के साथ एक निर्धारक परिवर्तन (एक ही संदेश => एक ही हैश) बनाने के लिएहैश और मूल संदेश के बीच संबंध। जैसा कि टिप्पणियों में उल्लेख किया गया है, संदेश में व्यवस्थित परिवर्तन करके उत्पादित हैश मूल्य के लिए कोई अनुमानित परिवर्तन नहीं होना चाहिए; आदर्श रूप से, प्रत्येक बिट डाइजेस्ट को बदलने का 50% मौका होगा, संदेश के एक बिट में बदलाव को देखते हुए।
एक हैश फ़ंक्शन के लिए कई उपयोग हैं; वे सादे सत्यापन को जानने के लिए दोनों पक्षों की आवश्यकता के बिना चुनौती सत्यापन के लिए उपयोग करते हैं (पासवर्ड की तरह लॉगिन क्रेडेंशियल्स पर विचार करें), और वे यह पुष्टि करने के लिए चेकसम के रूप में उपयोग किए जाते हैं कि संदेश के साथ छेड़छाड़ या दूषित नहीं किया गया है। वे तथाकथित "काम के सबूत" परिदृश्यों में भी उपयोग किए जाते हैं; कम्प्यूटेशनल कार्य जिन्हें पूरा करना मुश्किल है लेकिन सत्यापित करना आसान है।
यदि आप कभी भी किसी संदेश (किसी भी संदेश) को उत्पन्न करने के लिए SHA256 हैश डाइजेस्ट को कुशलतापूर्वक रिवर्स करने का एक तरीका ढूंढते हैं, तो उस हैश का परिणाम होगा, यह प्रदर्शन द्वारा एक सबूत होगा कि वास्तव में हैश मूल रूप से टूट गया है। SHA256 है, वास्तव में, सुरक्षित माना जाता है, जिसका अर्थ है कि कोई दस्तावेज विधि नहीं है, चाहे कितना भी व्यावहारिक हो, एक हैश डाइजेस्ट के साथ शुरू करने और एक टकराने वाले संदेश का उत्पादन करने के लिए बस हर संभावना की कोशिश करने की तुलना में कम काम की आवश्यकता होती है (जो SHA-256 के लिए आदर्श रूप से 2 है ^ 256 ~ = 10 ^ 77 संभावनाएं)।