लघु जवाब में पूर्ण स्रोत कोड पर एक नज़र हो सकता है: हाँ, यह करता है।
लंबा उत्तर: यह आवश्यक नहीं है। तुलना की जा रही
को समझने के लिए क्यों यह आवश्यक नहीं है, हम तार को देखने के लिए की जरूरत है:
$2y$10$9JxHB8U1QKsLS/ynplKzm.iIO7f6gtTKYA61ppVuANYxWNCA5DW1S
$2y$10$ILlWQrYyDJvHHkxcCgjm7OThLRAmMcTzsJOZOwjaSYiRUHq8LVYde
$2y$10$8JfydDKUNbOeiybwZ9m.j.5TC8CBqkc3RZu2DX42A4dFNpNYPWfzm
$2y$10$qeG.53lr9PVVGN4Yk.kSZuOMpfone5kINyWVpAf2gUXPseU2WdSzK
$2y$10$nZUgPUwiXIvCJ9BY1wbtbuV5vH6yff9CNyumFsI/NN2eJmf20iec.
एक ही पासवर्ड का 5 अलग हैश है यही कारण है कि। प्रारूप है:
$2y$10$saltsaltsaltsaltsaltsahashhashhashhashhashhashhashhas
अब, एक दूरस्थ हमलावर (जो समय पर हमला करेगा), नमक एक रहस्य है। और नमक वही होता है जब हम उनकी कोशिश फिर से करते हैं। उदाहरण के लिए: हमलावर पासवर्ड "abc" की कोशिश करता है
stored password "test":
hash = $2y$10$9JxHB8U1QKsLS/ynplKzm.iIO7f6gtTKYA61ppVuANYxWNCA5DW1S
हैं, तो आंतरिक रूप से password_verify()
crypt("abc", hash)
कॉल करेंगे। कौन सा परिणाम देगा में:
$2y$10$9JxHB8U1QKsLS/ynplKzm.iIO7f6gtTKYA61ppVuANYxWNCA5DW1S
$2y$10$9JxHB8U1QKsLS/ynplKzm.FTYpGS/gNDw4SB6YD0wEtCSPgGvtPim
सूचना नमक एक ही है:
$2y$10$9JxHB8U1QKsLS/ynplKzm.FTYpGS/gNDw4SB6YD0wEtCSPgGvtPim
अब, चलो कंधे से कंधा मिलाकर, उन दो हैश को देखो? ध्यान दें कि पहले .
तक सबकुछ समान है। यह भी ध्यान दें कि हमलावर को पता नहीं है कि नमक क्या है।
यदि हमलावर तुलना पर हमला करने में सक्षम था, तो यह अच्छा नहीं होगा। क्योंकि वे नमक को नहीं जानते हैं (और इसलिए हश के बिना हश बस समय बर्बाद कर देता है, वे पासवर्ड निर्धारित नहीं कर सकते हैं)।
तो समय सुरक्षा सुरक्षा कड़ाई से जरूरी नहीं है।
तब इसमें क्यों शामिल है? क्योंकि हर कोई गलती करता है। क्योंकि रक्षा-गहराई एक अच्छा विचार है।चूंकि यह विश्लेषण मानता है कि हैश के बारे में कुछ भी नमक के बिना उपयोगी नहीं है (उदा: क्या होगा अगर बैक्रीप में दोष में पासवर्ड के आधार पर हैंश को पक्षपात किया गया हो, तो नमक को जानने के बिना कुंजीपटल 72^255 से कम हो जाता है)।
संक्षेप में, यह एक अच्छी बात है, लेकिन यह कड़ाई से जरूरी नहीं है ...
धन्यवाद! पहले इस रेपो को कभी नहीं देखा। – Nevertheless