SHA2() फंक्शन का उपयोग
MySQL में SHA2(str, hash_length) फंक्शन SHA-2 परिवार के हैश फंक्शन्स (SHA-224, SHA-256, SHA-384, SHA-512) की गणना करता है। मौजूदा MD5 हैश को SHA-256 में बदलने के लिए उपयोग करें।
उदाहरण: टेबल बनाना और MD5 पासवर्ड इन्सर्ट करना
mysql> CREATE TABLE DemoTable818(UserPassword TEXT); Query OK, 0 rows affected (0.51 sec)
MD5 हैश इन्सर्ट करना
mysql> INSERT INTO DemoTable818 VALUES(MD5('John_123')), (MD5('999Carol@22'));
Query OK, 2 rows affected (...)
संग्रहीत MD5 हैश देखना
mysql> SELECT * FROM DemoTable818;
+----------------------------------+ | UserPassword | +----------------------------------+ | 47c7d0987db4e59e2264ce9fefce4977 | | 950aa70edd5b686a807b3bfffdf2248c | +----------------------------------+ 2 rows in set (0.00 sec)
MD5 से SHA-256 में बदलने की क्वेरी
mysql> UPDATE DemoTable818 SET UserPassword = SHA2(UserPassword, 256); Query OK, 2 rows affected (0.19 sec) Rows matched: 2 Changed: 2 Warnings: 0
बदले गए SHA-256 हैश देखना
mysql> SELECT * FROM DemoTable818;
+------------------------------------------------------------------+ | UserPassword | +------------------------------------------------------------------+ | 8b68c46294a9ccb2449324c24fe774f95b7c14e4b56fc51c7f8e6c5b01c7020f | | 9cc80741546051ae3de7d31246327968c98af3c65125376acb7b49a0760d42a3 | +------------------------------------------------------------------+ 2 rows in set (0.00 sec)
महत्वपूर्ण सुरक्षा नोट
मौजूदा MD5 हैश को SHA-256 में हैश करना (
SHA2(MD5(password), 256)) मूल पासवर्ड को SHA-256 में हैश करने (SHA2(password, 256)) के बराबर नहीं है। यह केवल हैश को "री-हैश" करता है।
सही पासवर्ड माइग्रेशन रणनीति
- अगले लॉगिन पर री-हैश: जब यूजर लॉगिन करे, MD5 वेरिफाई करें, फिर मूल पासवर्ड से नया SHA-256/बीक्रिप्ट/आर्गन2 हैश बनाएं और स्टोर करें
- डबल हैश लेयर: नया हैश =
SHA2(CONCAT('salt', MD5(password)), 256)- लेकिन मूल पासवर्ड के बिना असंभव - पासवर्ड रीसेट बाध्य करें: सभी यूजर्स को पासवर्ड रीसेट करने के लिए मजबूर करें
आधुनिक पासवर्ड हैशिंग (अनुशंसित)
-- MySQL 8.0+ में वैधता जांच के लिए (हैशिंग एप्लिकेशन लेयर पर करें)
-- बीक्रिप्ट/आर्गन2 के लिए एप्लिकेशन कोड (PHP, Python, Node.js) का उपयोग करें
-- MySQL में केवल वेरिफिकेशन के लिए (यदि हैश पहले से स्टोर है)
SELECT UserPassword = SHA2('input_password', 256) FROM users WHERE username = '...';
SHA2 वेरिएंट्स
SHA2(str, 224) -- SHA-224 (56 हेक्स कैरेक्टर) SHA2(str, 256) -- SHA-256 (64 हेक्स कैरेक्टर) SHA2(str, 384) -- SHA-384 (96 हेक्स कैरेक्टर) SHA2(str, 512) -- SHA-512 (128 हेक्स कैरेक्टर)
साल्ट जोड़ना (आवश्यक)
-- एप्लिकेशन लेयर पर hash = SHA2(CONCAT(salt, password), 256) -- सॉल्ट को अलग कॉलम में स्टोर करें