दिलचस्प पोस्ट
चयनकर्ता छवियां प्रोग्राम को प्रतिस्थापित करें पायथन में मैं कैसे "सीडी" करूँ? AngularJS छिपा क्षेत्र मान नहीं भेजता है AngularJS: एक स्ट्रिंग से HTML डालें घातक त्रुटि: क्लास 'SoapClient' नहीं मिला HttpServletRequest – सेटचरैक्टरइन्कोडिंग कुछ भी नहीं कर रहा है Android में सो थैड या प्रक्रिया को कैसे रोकें? स्विफ्ट में आदेश दिया गया शब्द पूर्ण बाहरी SQLite के साथ जुड़ें डाटा जारी रखने के लिए एंड्रॉइड एपलीकेशन क्लास का इस्तेमाल करना स्थिर नाम से अज्ञात नामस्थान की श्रेष्ठता? TextRenderer के बराबर WPF * इंटरनेट * आईपी कैसे प्राप्त करें? कैसे सी में आईओएस ऐप विशुद्ध रूप से लिखने के लिए नोड। जेएस के साथ रीयल टाइम में वेब पेज स्क्रैप करें

पासवर्ड को हैशिंग और एन्क्रिप्ट करने में अंतर

वर्तमान में इस प्रश्न के अनुसार सबसे अधिक वोट दिया गया है:

एक और ऐसा कोई सुरक्षा मुद्दा नहीं है, हालांकि यह सुरक्षा संबंधी है, एक पासवर्ड हैशिंग और उसे एन्क्रिप्ट करने में अंतर करने के लिए पूर्ण और घिनौने विफलता है । सबसे अधिक कोड में पाया जाता है जहां प्रोग्रामर असुरक्षित "मेरे पासवर्ड की याद दिलाएं" कार्यक्षमता प्रदान करने का प्रयास कर रहा है

वास्तव में यह अंतर क्या है? मैं हमेशा इस धारणा के तहत था कि हिसिंग एन्क्रिप्शन का एक रूप था। असुरक्षित कार्यक्षमता क्या पोस्टर का जिक्र है?

Solutions Collecting From Web of "पासवर्ड को हैशिंग और एन्क्रिप्ट करने में अंतर"

हैशिंग एक तरह से फ़ंक्शन है (अच्छी तरह से, मानचित्रण)। यह अपरिवर्तनीय है, आप सुरक्षित हैश एल्गोरिथ्म लागू करते हैं और आप मूल स्ट्रिंग वापस नहीं प्राप्त कर सकते हैं। आप जो कर सकते हैं वह उतना ही उत्पन्न होता है जिसे "एक टकराव" कहा जाता है, अर्थात, एक अलग स्ट्रिंग ढूंढकर जो एक ही हैश प्रदान करता है क्रिप्टोग्राफ़ोग्राफ़िक सुरक्षित हैश एल्गोरिदम को टकराव की घटना को रोकने के लिए डिज़ाइन किया गया है। आप एक सुरक्षित हैश पर एक इंद्रधनुष तालिका का उपयोग करके हमला कर सकते हैं, जो इसे संचय करने से पहले हैश को एक नमक लगाने से रोक सकता है।

एन्क्रिप्ट करना एक उचित (दो तरह से) कार्य है यह प्रतिवर्ती है, यदि आप कुंजी है तो आप मूल स्ट्रिंग प्राप्त करने के लिए घिनौनी स्ट्रिंग को डिक्रिप्ट कर सकते हैं

असुरक्षित कार्यक्षमता यह है कि यदि आप पासवर्ड को एन्क्रिप्ट करते हैं, तो आपके ऐप में कहीं कुंजी को संग्रहीत की जाती है और जो एक हमलावर जो आपके डेटाबेस (और / या कोड) तक पहुँच जाता है, वह मूल कुंजीपटल और एन्क्रिप्टेड पाठ दोनों प्राप्त कर सकता है , जबकि एक हैश के साथ यह असंभव है

लोग आमतौर पर कहते हैं कि यदि कोई पटाखा आपके डेटाबेस या आपके कोड का मालिक है तो उसे पासवर्ड की आवश्यकता नहीं है, इस प्रकार अंतर अंतर है। यह भोली है, क्योंकि आपके पास अपने उपयोगकर्ताओं के पासवर्ड को संरक्षित करने का कर्तव्य है, मुख्यतः क्योंकि उनमें से ज्यादातर एक ही पासवर्ड का प्रयोग बार-बार करते हैं, उनके पासवर्ड को लीक करके उन्हें अधिक जोखिम के रूप में उजागर करते हैं।

हैशिंग एक-तरफ़ा फ़ंक्शन है, जिसका अर्थ है कि एक बार आपके पास एक पासवर्ड हैश करने से मूल पासवर्ड को वापस प्राप्त करना बहुत कठिन है। एन्क्रिप्शन एक दो-तरफ़ा फ़ंक्शन है, जहां मूल पाठ वापस एन्क्रिप्ट किए गए पाठ से प्राप्त करना आसान है।

प्लेन हैशिंग आसानी से एक शब्दकोश हमले का उपयोग करके पराजित हो जाता है, जहां एक हमलावर ने प्रत्येक शब्द को किसी शब्दकोश में (या किसी निश्चित लंबाई तक वर्णों के हर संयोजन) पहले से तोड़ दिया है, तो हैश किए गए पासवर्ड देखने के लिए इस नए शब्दकोश का उपयोग करता है। संग्रहीत प्रत्येक हैहेड पासवर्ड के लिए अनन्य यादृच्छिक नमक का उपयोग करने से यह हमलावर को इस विधि का उपयोग करने के लिए अधिक कठिन बना देता है। मूल रूप से उन सभी नमक मूल्यों के लिए एक नया अद्वितीय शब्दकोश बनाने की आवश्यकता होगी जो आप उपयोग करते हैं, उनके आक्रमण को बहुत धीमा कर देते हैं

यह एक एन्क्रिप्शन एल्गोरिथम का उपयोग करके पासवर्ड संग्रहीत करने में असुरक्षित है, क्योंकि अगर उपयोगकर्ता या व्यवस्थापक को एन्क्रिप्ट किए गए पाठ से मूल पासवर्ड वापस प्राप्त करना आसान हो जाता है, तो यह भी एक हमलावर के लिए ऐसा करना आसान होता है

मैंने हमेशा सोचा है कि एन्क्रिप्शन को दोनों तरीकों से परिवर्तित किया जा सकता है, इस तरह से अंत मूल्य आपको मूल मूल्य पर ला सकता है और हैशिंग के साथ आप अंतिम परिणाम से मूल मूल्य तक वापस नहीं लौट पाएंगे।

हैशिंग एल्गोरिदम आमतौर पर प्रकृति में क्रिप्टोग्राफिक होते हैं, लेकिन मुख्य अंतर यह है कि एन्क्रिप्शन डिक्रिप्शन के द्वारा प्रतिवर्ती है, और हैशिंग नहीं है।

एक एन्क्रिप्शन फ़ंक्शन आमतौर पर इनपुट लेता है और एन्क्रिप्ट किए गए आउटपुट का उत्पादन करता है जो समान है, या थोड़ा बड़ा आकार है।

एक हैशिंग फ़ंक्शन इनपुट लेता है और आमतौर पर एक छोटे आकार का उत्पादन करता है, आमतौर पर एक निश्चित आकार के रूप में भी।

हालांकि एक हानिकारक परिणाम लेना संभव नहीं है और मूल इनपुट को वापस लाने के लिए "dehash" करना संभव नहीं है, तो आप आमतौर पर किसी भी तरह से अपने हथियार को मजबूर कर सकते हैं जो उसी हैश का उत्पादन करता है।

दूसरे शब्दों में, यदि एक प्रमाणीकरण स्कीम एक पासवर्ड लेता है, इसे हंस कर लेता है, और इसके पासवर्ड की हैशल्ड संस्करण की तुलना करता है, हो सकता है कि यह आवश्यक न हो कि आप वास्तव में मूल पासवर्ड जानते हैं, केवल इसकी हैश और आप जबाव कर सकते हैं आपके द्वारा जो कुछ मैच होगा, उसका तरीका, भले ही यह एक अलग पासवर्ड हो।

हैशिंग फ़ंक्शंस आम तौर पर टकराव की संभावना को कम करने के लिए बनाया जाता है और इसे केवल कुछ ऐसी गणना करने में कठिनाई होती है जो कुछ हद तक उसी हैश का उत्पादन करेगी।

एनक्रिप्टेड बनाम हज़ेड पासवर्ड

जैसा कि ऊपर की छवि में दिखाया गया है, यदि पासवर्ड एन्क्रिप्ट किया गया है तो यह हमेशा एक गुप्त छिपाना है जहां कोई सादे पाठ पासवर्ड निकाल सकता है। हालांकि जब पासवर्ड धोया जाता है, तो आप आराम कर देते हैं क्योंकि हैश वैल्यू से पासवर्ड पुनर्प्राप्त करने का कोई भी तरीका नहीं है।


एन्क्रिप्टेड बनाम हज़ेड पासवर्ड से निकाले गए – कौन सा बेहतर है?

क्या एन्क्रिप्शन अच्छा है?

सादा पाठ पासवर्ड को डीईएस, एईएस या समतुल्य एन्क्रिप्शन एल्गोरिदम का उपयोग करके एन्क्रिप्ट किया जा सकता है या अन्य एल्गोरिदम के साथ और डाटाबेस के अंदर संग्रहीत किया जा सकता है। प्रमाणीकरण (उपयोगकर्ता नाम और पासवर्ड के साथ पहचान की पुष्टि), एन्क्रिप्टेड पासवर्ड को डेटाबेस में संग्रहीत एन्क्रिप्टेड पासवर्ड को डिक्रिप्ट करेगा और समानता के लिए उपयोक्ता प्रदान किए गए पासवर्ड की तुलना करेगा। इस तरह के पासवर्ड से निपटने के दृष्टिकोण में, भले ही किसी को डेटाबेस तालिकाओं तक पहुँच प्राप्त हो, तो पासवर्ड केवल पुन: प्रयोज्य नहीं होंगे। हालांकि इस दृष्टिकोण में भी बुरी खबर है यदि किसी व्यक्ति को आपके एप्लिकेशन द्वारा उपयोग की गई कुंजी के साथ क्रिप्टोग्राफ़िक एल्गोरिथ्म प्राप्त होता है, तो वह / डिक्रिप्शन द्वारा आपके डेटाबेस में संग्रहीत सभी उपयोगकर्ता पासवर्ड को देख सकेंगे। "यह सबसे अच्छा विकल्प मुझे मिला है", एक सॉफ्टवेयर डेवलपर चीख सकता है, लेकिन क्या इसका बेहतर तरीका है?

क्रिप्टोग्राफिक हैश फ़ंक्शन (एक -मार्ग-मात्र)

हाँ, यह हो सकता है कि आप यहां बिंदु याद कर चुके हैं। क्या आपने देखा है कि डिक्रिप्ट और तुलना करने की कोई आवश्यकता नहीं है? यदि एकमात्र तरीका केवल रूपांतरण दृष्टिकोण होता है जहां पासवर्ड को कुछ रूपांतरित-शब्द में कनवर्ट किया जा सकता है, लेकिन रिवर्स ऑपरेशन (परिवर्तित-शब्द से पासवर्ड की पीढ़ी) असंभव है अब भी अगर किसी को डाटाबेस तक पहुंच मिलती है, तो इसका कोई मतलब नहीं है कि पासवर्ड को परिवर्तित शब्दों का उपयोग करके पुनः प्रजनित या निकाला जा सकता है। इस दृष्टिकोण में, शायद कुछ भी हो सकता है कि कुछ आपके उपयोगकर्ताओं के शीर्ष गुप्त पासवर्ड को जानते हों; और यह कई अनुप्रयोगों में समान पासवर्ड का उपयोग करने वाले उपयोगकर्ताओं की रक्षा करेगा। क्या इस दृष्टिकोण के लिए एल्गोरिदम का उपयोग किया जा सकता है?

हैशिंग: यह एक-तरफ़ा एल्गोरिथम है और एक बार हथेली रोलबैक नहीं कर सकती है और यह एन्क्रिप्शन के विरुद्ध इसकी मिठाई बात है। अगर हम एन्क्रिप्शन करते हैं, तो ऐसा करने के लिए एक कुंजी होगी। यदि यह कुंजी लीक हो जाएगी तो आपके सभी पासवर्ड आसानी से डिक्रिप्ट हो सकते हैं दूसरी तरफ, भले ही आपके डेटाबेस काट दिया जाए या आपके सर्वर व्यवस्थापक ने डीबी से डेटा ले लिया हो और आपने हैश किए गए पासवर्ड इस्तेमाल किए हों, तो हैकर इन हैशड पासवर्ड को तोड़ने में सक्षम नहीं होगा यह वास्तव में व्यावहारिक रूप से असंभव होगा यदि हम सही नमक और पीबीकेडीएफ 2 के साथ अतिरिक्त सुरक्षा के साथ हैशिंग का उपयोग करें।

यदि आप अपने हैश फ़ंक्शन को कैसे लिखना चाहिए पर एक नज़र रखना चाहते हैं, तो आप यहां पर जा सकते हैं ।

हैशिंग करने के लिए कई एल्गोरिदम हैं

  1. MD5 – संदेश डायजेस्ट अल्गोरिदम 5 (एमडी 5) हैश फ़ंक्शन का उपयोग करता है। आउटपुट हैश लंबाई में 128 बिट है एमडी 5 एल्गोरिथम को 1 99 0 के दशक के शुरुआती दिनों में रॉन रिव्स्ट द्वारा डिजाइन किया गया था और आज यह कोई पसंदीदा विकल्प नहीं है।

  2. SHA1 – सुरक्षा हाश एल्गोरिथ्म (एसएचए 1) हैश का उपयोग 1995 में प्रकाशित हुआ। आउटपुट हैश लंबाई में 160 बिट है। यद्यपि अधिकतर व्यापक रूप से उपयोग किया जाता है, यह आज एक पसंदीदा विकल्प नहीं है।

  3. एचएमएसीएचएच 256, एचएमएसीएचएच 384, एचएमएसीएचए 125 – एसएचए -2 परिवार के एसएचए -256, एसएचए -384 और एसएचए -512 का उपयोग करें। शा -2 को 2001 में प्रकाशित किया गया था। उत्पादन हैश लंबाई क्रमशः 256, 384 और 512 बिट्स है, क्योंकि हैश फ़ंक्शन के नामों से संकेत मिलता है

जैसा कि अन्य उत्तर के रूप में सही हो सकता है, उद्धरण में संदर्भ में, हैशिंग एक उपकरण है जिसे सूचना हासिल करने में इस्तेमाल किया जा सकता है, एन्क्रिप्शन एक ऐसी प्रक्रिया है जो जानकारी लेती है और अनधिकृत लोगों को पढ़ने / उपयोग करने के लिए इसे बहुत मुश्किल बनाता है।

आदर्श रूप से आपको दोनों करना चाहिए।

पहले एक तरह से सुरक्षा के लिए पास पासवर्ड हैश। अतिरिक्त सुरक्षा के लिए नमक का उपयोग करें

तब हैश को एन्क्रिप्ट करें ताकि हमलों के हमलों से बचाव कर सकें अगर पासवर्ड के आपके डेटाबेस का समझौता किया गया है।

यहां एक कारण है कि आप एक से दूसरे पर पासवर्ड का उपयोग करना चाहते हैं – पासवर्ड पुनर्प्राप्ति

यदि आप केवल उपयोगकर्ता के पासवर्ड का एक हैश संग्रहित करते हैं, तो आप 'भूल गए पासवर्ड' सुविधा की पेशकश नहीं कर सकते।