मेरे पास एक पुराना एप्लिकेशन है जिसमें डेटाबेस में उपयोगकर्ता पासवर्ड को MD5 हैश के साथ संग्रहीत किया गया है। मैं इसे SHA-2 परिवार में कुछ के साथ बदलना चाहता हूं।मैं एमडी 5 से एसएचए में पासवर्ड हैशिंग कैसे बदलूं?
मैंने इसे पूरा करने के दो संभावित तरीकों के बारे में सोचा है, लेकिन दोनों बदसूरत लगते हैं।
1) एक बूलियन "ध्वज" फ़ील्ड जोड़ें। उपयोगकर्ता द्वारा पहली बार प्रमाणीकरण करने के बाद, एमडी 5 पासवर्ड हैश को SHA पासवर्ड हैश के साथ बदलें, और ध्वज सेट करें। फिर मैं यह देखने के लिए ध्वज की जांच कर सकता हूं कि पासवर्ड हैश बदल गया है या नहीं।
2) SHA हैश को स्टोर करने के लिए दूसरा पासवर्ड फ़ील्ड जोड़ें। उपयोगकर्ता द्वारा पहली बार प्रमाणीकरण करने के बाद, SHA के साथ पासवर्ड हैश और इसे नए फ़ील्ड में संग्रहीत करें (संभवतः एक ही समय में उनके MD5 हैश को हटाएं)। फिर मैं जांच सकता हूं कि एसएचए फ़ील्ड का मूल्य है या नहीं; यह अनिवार्य रूप से मेरा ध्वज बन जाता है।
किसी भी मामले में, एमडी 5 प्रमाणीकरण किसी भी उपयोगकर्ता के लिए कुछ समय के लिए जगह पर रहना होगा जो अक्सर लॉग इन करता है। और जो भी उपयोगकर्ता अब सक्रिय नहीं हैं उन्हें कभी भी SHA पर स्विच नहीं किया जाएगा।
क्या ऐसा करने का कोई बेहतर तरीका है?
आपका दो समाधान मेरे लिए ठीक लग रहा है। – wtaniguchi
और मैं नेड के जवाब को ऊपर उठा रहा हूं, उसके पास एक अच्छा बिंदु है। – wtaniguchi
उन उपयोगकर्ताओं के लिए जो कभी भी स्विच नहीं किए जाते हैं - मुझे लगता है कि लोगों के एक निश्चित प्रतिशत के बाद स्विच किया गया है और एमडी 5 हैश से छुटकारा पाने के लिए पर्याप्त समय बीत चुका है। जिन लोगों ने उस अवधि के दौरान लॉग ऑन नहीं किया है, उन्हें अपने पासवर्ड रीसेट करना होगा जब वे कभी भी लॉग इन करेंगे। स्वीकार्य है या नहीं (और कब) एक व्यापार निर्णय है। –