2012-06-24 16 views
8

रेल के साथ काम कर रहा हूं और मैंने देखा है कि पासवर्ड के पचाने के अलावा अन्य सभी क्षेत्रों के साथ 2 पासवर्ड के लिए मेरा पासवर्ड_डिजिस्ट अलग है। लेकिन मैं दोनों के लिए एक ही पासवर्ड का "एबीसीडी" का इस्तेमाल किया ..
यह इन 2 अलग हैशएक ही पासवर्ड वाले 2 उपयोगकर्ताओं के लिए पासवर्ड हैश अलग क्यों है?

  1. $2a$10$QyrjMQfjgGIb4ymtdKQXI.WObnWK0/CzR6yfb6tlGJy0CsVWY0GzO
  2. $2a$10$dQSPyeQmZCzVUOXQ3rGtZONX6pwvnKSBRmsLnq1t1CsvdOTAMQlem

पैदा करने समाप्त हो गया मैंने सोचा bcrypt मणि हैश उत्पन्न करता है केवल पासवर्ड फ़ील्ड के आधार पर! क्या मै गलत हु? धन्यवाद :)

+0

शायद (उम्मीद है) पासवर्ड [नमकीन] (http://en.wikipedia.org/wiki/Salt_ (क्रिप्टोग्राफी)) है? –

+0

[नमस्कार!] (Http://en.wikipedia.org/wiki/Salt_%28cryptography%29) –

+0

यह व्यवहार डिज़ाइन द्वारा _emphatically_ है। – SLaks

उत्तर

16

जो आप यहां देख रहे हैं वह एक पासवर्ड हैश से अधिक है, उन तारों में हैश के बारे में बहुत सारे मेटाडेटा हैं। Bcrypt के संदर्भ में पूरी स्ट्रिंग को bcrypt हैश माना जाएगा। यहां यह शामिल है:

$ bcrypt में delimiter है।

$ 2a $ बीसीक्रिप्ट एल्गोरिदम का उपयोग किया गया था।

$ $ उपयोग किया जाने वाला लागत कारक है। यही कारण है कि ब्रशिप हैश स्टोर करने के लिए बहुत लोकप्रिय है। प्रत्येक हैश में इसकी जटिलता/लागत है, जिसे आप इस हेश को उत्पन्न करने के लिए कंप्यूटर को कितनी जल्दी ले जाएंगे। यह संख्या निश्चित रूप से कंप्यूटर की गति के सापेक्ष है, इसलिए कंप्यूटरों को वर्षों में तेजी से और तेज़ हो जाता है, इसलिए 10 की लागत के साथ हैश उत्पन्न करने में कम और कम समय लगेगा। इसलिए अगले वर्ष आप अपनी लागत 11 तक बढ़ाएं, फिर 12 ... 13 ... और इतने पर। यह आपके भविष्य के हैंश को मजबूत बनाए रखने की अनुमति देता है जबकि आपके पुराने हैंश अभी भी वैध में रखते हैं। बस ध्यान दें कि मूल स्ट्रिंग को रीहाश किए बिना आप हैश की लागत को नहीं बदल सकते हैं।

$ QyrjMQf ... नमक और हैश का संयोजन है। यह एक बेस 64 एन्कोडेड स्ट्रिंग है।

पहले 22 वर्ण नमक हैं।

शेष वर्ण 2 ए एल्गोरिदम, 10 की लागत, और दिए गए नमक के साथ उपयोग किए जाने वाले हैंश हैं। नमक का कारण यह है कि हमलावर बीआरक्रिप्ट हश की गणना नहीं कर सकता है ताकि उन्हें उत्पन्न करने की लागत का भुगतान करने से बच सकें।

वास्तव में यह अपने मूल सवाल का जवाब है: कारण हैश अलग हैं क्योंकि अगर वे एक ही थे आप किसी भी समय bcrypt स्ट्रिंग $2a$10$QyrjMQfjgGIb4ymtdKQXI.WObnWK0/CzR6yfb6tlGJy0CsVWY0GzO क्या आप जानते हैं पासवर्ड abcd होगा देखा पता होगा। तो आप केवल हैश के डेटाबेस स्कैन कर सकते हैं और उस हैश को देखकर एबीसीडी पासवर्ड वाले सभी उपयोगकर्ताओं को तुरंत ढूंढ सकते हैं।

आप इसे bcrypt के साथ नहीं कर सकते क्योंकि $2a$10$dQSPyeQmZCzVUOXQ3rGtZONX6pwvnKSBRmsLnq1t1CsvdOTAMQlem भी abcd है। और वहां कई सारे हैंश हैं जो bcrypt('abcd') का परिणाम होंगे। यह असंभव के बगल में एबीसीडी पासवर्ड के लिए डेटाबेस स्कैनिंग करता है।

+1

धन्यवाद! :) वह वास्तव में सहायक था और जो भी मैं उम्मीद कर रहा था उससे कहीं ज्यादा! – viswa

2

bcrypt पासवर्ड हैश में नमक स्टोर करता है।

वे दो अलग-अलग नमक के साथ एक ही पासवर्ड के दो अलग हैंश हैं।

पासवर्ड सत्यापित करते समय, bcrypt हैश फ़ील्ड से नमक पढ़ेगा, फिर उस नमक का उपयोग करके हैश की पुन: गणना करें।

संबंधित मुद्दे