Pack Camo

Bcrypt और Argon2 हैश जनरेटर

bcrypt या Argon2id से पासवर्ड हैश करें, या सेव किए हैश से वेरिफ़ाई करें।

सब कुछ लोकल तौर पर चलता है — कुछ भी अपलोड नहीं होता।

28 बाइट

एन्कोड किया हैश यहाँ दिखेगा।

bcrypt या Argon2 से पासवर्ड हैश करें, या सेव किए हैश से मिलान करें

यह पासवर्ड हैश जनरेटर bcrypt हैश (<code>$2b$</code>, cost 4 से 15) और मानक PHC स्ट्रिंग फ़ॉर्मेट में Argon2id, Argon2i और Argon2d हैश बनाता है, जिसमें मेमोरी, iterations, parallelism, salt और आउटपुट का आकार आप खुद तय करते हैं। <strong>वेरिफ़ाई</strong> पर जाएँ, अपने डेटाबेस का हैश पेस्ट करें, प्रीफ़िक्स से उसका एल्गोरिदम और पैरामीटर पहचानें, और जाँचें कि पासवर्ड मेल खाता है या नहीं। हर हैश नया रैंडम salt लेता है और दिखाता है कि आपके डिवाइस पर उसमें कितना समय लगा। हैशिंग आपके ब्राउज़र में WebAssembly से चलती है; पासवर्ड कभी अपलोड नहीं होता।

bcrypt या Argon2 हैश कैसे बनाएँ

  1. 1हैश चुनें, फिर एल्गोरिदम: नए सिस्टम के लिए Argon2id, मौजूदा सिस्टम से मेल के लिए bcrypt।
  2. 2Cost सेट करें: bcrypt का cost factor, या Argon2 का प्रीसेट जैसे OWASP 19 MiB, t=2। किसी कॉन्फ़िगरेशन से मिलाना हो तो मेमोरी, iterations और parallelism हाथ से बदलें।
  3. 3पासवर्ड टाइप करें और पासवर्ड हैश करें दबाएँ। एन्कोड किया हैश, उसके हिस्से और लगा समय नीचे दिखेंगे।
  4. 4हैश जाँचने के लिए वेरिफ़ाई चुनें, सेव किया हैश और पासवर्ड पेस्ट करें, और वेरिफ़ाई करें दबाएँ।

पासवर्ड को धीमे हैश की ज़रूरत क्यों है

SHA-256 जैसा तेज़ हैश पासवर्ड के लिए गलत औज़ार है। एक ग्राफ़िक्स कार्ड हर सेकंड अरबों SHA-256 हैश बना लेता है, इसलिए लीक हुई SHA-256 पासवर्ड हैश की टेबल को उसी रफ़्तार से अनुमान लगाकर तोड़ा जा सकता है। पासवर्ड हैशिंग फ़ंक्शन जानबूझकर धीमे बनाए जाते हैं और Argon2 के मामले में बहुत मेमोरी माँगते हैं, ताकि हर अनुमान में असली समय और हार्डवेयर लगे। जो सेटिंग आपके सर्वर पर चौथाई सेकंड लेती है, वह हमलावर को हर यूज़र के हर अनुमान पर वही चौथाई सेकंड खर्च करवाती है।

हर हैश में उसका अपना रैंडम salt भी होता है, इसलिए एक ही पासवर्ड वाले दो यूज़र्स को अलग-अलग हैश मिलते हैं और पहले से गणना की गई टेबल बेकार हो जाती हैं। salt और सारे पैरामीटर हैश स्ट्रिंग के अंदर ही सेव रहते हैं, इसीलिए लाइब्रेरी सिर्फ़ हैश से पासवर्ड वेरिफ़ाई कर सकती है।

bcrypt हैश को कैसे पढ़ें

$2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW जैसे bcrypt हैश के चार हिस्से होते हैं: वर्ज़न 2b, cost 12 (212 = 4,096 राउंड key expansion), 22 कैरेक्टर का salt और 31 कैरेक्टर का हैश, दोनों bcrypt की अपनी Base64 वर्णमाला में। cost में हर एक की बढ़त समय को दोगुना कर देती है।

72 बाइट तक के पासवर्ड के लिए $2a$, $2b$ और $2y$ एक ही नतीजा देते हैं; ये अक्षर पुराने इम्प्लीमेंटेशन के बग फ़िक्स दर्शाते हैं। bcrypt पासवर्ड के सिर्फ़ पहले 72 बाइट पढ़ता है और बाकी को नज़रअंदाज़ करता है, जिसके बारे में यह टूल चेतावनी देता है — लंबा पासफ़्रेज़, या हिंदी जैसी गैर-लैटिन लिपि वाला पासवर्ड जिसमें एक कैरेक्टर दो से चार बाइट लेता है, उम्मीद से पहले इस सीमा तक पहुँच सकता है।

Argon2id, Argon2i और Argon2d

PHC स्ट्रिंग में वेरिफ़िकेशन के लिए ज़रूरी सब कुछ दर्ज होता है: $argon2id$v=19$m=19456,t=2,p=1$<salt>$<hash> का मतलब है वर्ज़न 1.3, 19,456 KiB मेमोरी, 2 passes और 1 lane, उसके बाद बिना padding वाले Base64 में salt और हैश।

Argon2id
नीचे दिए दोनों का हाइब्रिड, और वही वैरिएंट जिसे RFC 9106 और OWASP पासवर्ड स्टोरेज के लिए सुझाते हैं। जब तक कोई मजबूरी न हो, इसी का इस्तेमाल करें।
Argon2i
मेमोरी एक्सेस पासवर्ड पर निर्भर नहीं करता, जिससे यह side-channel हमलों से बचाता है, लेकिन कम passes पर GPU क्रैकिंग के आगे कमज़ोर है।
Argon2d
मेमोरी एक्सेस पासवर्ड पर निर्भर करता है: GPU के खिलाफ़ सबसे मज़बूत, पर side-channel के लिए खुला। proof-of-work के लिए ठीक, लॉगिन जाँचने वाले सर्वर के लिए नहीं।

सुझाई गई सेटिंग्स

  • Argon2id: OWASP 2 iterations और parallelism 1 के साथ 19 MiB मेमोरी सुझाता है, या बराबर का संतुलन जैसे 1 iteration के साथ 47 MiB या 3 के साथ 12 MiB। मेमोरी हो तो RFC 9106 64 MiB, 3 iterations और 4 lanes सुझाता है।
  • bcrypt: cost कम से कम 10; आजकल 12 आम डिफ़ॉल्ट है। वह सबसे ऊँची cost चुनें जो आपका लॉगिन endpoint झेल सके — सर्वर पर प्रति हैश लगभग 250 ms एक उचित लक्ष्य है।
  • Salt: 16 रैंडम बाइट। हैश लंबाई: 32 बाइट काफ़ी है।
  • यहाँ मापा गया समय आपके डिवाइस पर WebAssembly में है, जो आमतौर पर सर्वर की नेटिव लाइब्रेरी से धीमा होता है। cost तय करने से पहले अपने प्रोडक्शन हार्डवेयर पर बेंचमार्क करें।

यह टूल कब इस्तेमाल करें

इसका इस्तेमाल seed यूज़र या कॉन्फ़िग फ़ाइल के लिए हैश बनाने, यह जाँचने कि आपके डेटाबेस का हैश सच में उसी पासवर्ड से मेल खाता है जो आप सोच रहे हैं, या यह पता करने के लिए करें कि किसी मौजूदा हैश को किन पैरामीटर से बनाया गया था। आपके ऐप्लिकेशन को साइन-अप के समय अपनी लाइब्रेरी से पासवर्ड हैश करने चाहिए; उसे कभी भी सादे पासवर्ड हैश करवाने के लिए किसी वेबसाइट पर नहीं भेजने चाहिए। हैश करने के लिए मज़बूत पासवर्ड बनाने हेतु पासवर्ड जनरेटर इस्तेमाल करें; पासवर्ड स्टोरेज के बजाय key वाले सिग्नेचर के लिए HMAC जनरेटर देखें।

अक्सर पूछे जाने वाले सवाल

मुझे bcrypt इस्तेमाल करना चाहिए या Argon2?
नए सिस्टम के लिए Argon2id: यह Password Hashing Competition का विजेता है और memory-hard है, जिससे GPU और ASIC क्रैकिंग कहीं ज़्यादा महँगी हो जाती है। bcrypt अब भी स्वीकार्य है और बहुत व्यापक रूप से सपोर्टेड है, इसलिए अगर आपका स्टैक पहले से इसे इस्तेमाल करता है तो इसे रखें।
एक ही पासवर्ड का हैश हर बार अलग क्यों आता है?
हर हैश नया रैंडम salt इस्तेमाल करता है, इसलिए आउटपुट हर बार बदलता है। यह जानबूझकर है। पासवर्ड जाँचने के लिए दो नए हैश की तुलना करने के बजाय उसे सेव किए हैश से वेरिफ़ाई करें।
क्या bcrypt या Argon2 हैश को डिक्रिप्ट किया जा सकता है?
नहीं। ये one-way फ़ंक्शन हैं। पासवर्ड पता करने का एकमात्र तरीका है उम्मीदवारों का अनुमान लगाकर हर एक को हैश करना, जिसे ये एल्गोरिदम जानबूझकर धीमा बनाते हैं।
bcrypt में 72 बाइट की सीमा क्या है?
bcrypt पासवर्ड के सिर्फ़ पहले 72 बाइट इस्तेमाल करता है। उसके बाद का कुछ भी हैश पर असर नहीं डालता, इसलिए पहले 72 बाइट एक जैसे वाले दो लंबे पासवर्ड मेल खाने वाले हैश देते हैं। Argon2 में ऐसी कोई सीमा नहीं है।
bcrypt के लिए कौन सा cost factor इस्तेमाल करूँ?
कम से कम 10, और 12 आम डिफ़ॉल्ट है। हर बढ़त काम को दोगुना करती है। वह सबसे ऊँची वैल्यू चुनें जिससे आपके सर्वर पर लॉगिन ठीक-ठाक तेज़ रहे।
क्या $2a$, $2b$ और $2y$ bcrypt हैश compatible हैं?
हाँ, 72 बाइट तक के पासवर्ड के लिए ये एक ही हैश देते हैं। ज़्यादातर लाइब्रेरी तीनों प्रीफ़िक्स स्वीकार करती हैं, और यह टूल तीनों को वेरिफ़ाई करता है।
वेरिफ़ाई करने में हैश बनाने जितना समय क्यों लगता है?
वेरिफ़ाई करने का मतलब है हैश में सेव salt और पैरामीटर से पासवर्ड को फिर से हैश करना और नतीजों की तुलना करना, इसलिए इसमें ठीक उतना ही काम लगता है। यही अनुमान लगाने को महँगा बनाता है।
क्या पासवर्ड किसी सर्वर पर भेजा जाता है?
नहीं। bcrypt और Argon2 आपके ब्राउज़र के अंदर WebAssembly में चलते हैं। आप जो भी टाइप करते हैं वह पेज से बाहर नहीं जाता।