Bcrypt Generator — ऑनलाइन पासवर्ड hash बनाएँ
Bcrypt Generator
Hashing runs locally in your browser. Your password is never uploaded or stored.
क्या है
पासवर्ड hash एक one-way function है जो पासवर्ड को निश्चित लंबाई वाली string में बदल देता है, इस तरह कि मूल पासवर्ड उसमें से निकाला न जा सके, लेकिन वही पासवर्ड बाद में दोबारा hash करके उस hash से मिलाया जा सकता है। bcrypt वही विशिष्ट algorithm है जिसे यह टूल लागू करता है, जिसे Niels Provos और David Mazieres ने बनाया और 1999 में OpenBSD के password hashing scheme के रूप में जारी किया। यह adaptive या जानबूझकर महँगी key derivation functions के परिवार से है और Blowfish block cipher पर बना है। संरचनागत रूप से, bcrypt एक random 128-bit salt बनाता है, उसे पासवर्ड के साथ मिलाता है, फिर महँगी EksBlowfish key schedule को समायोज्य संख्या बार चलाता है, जहाँ वह संख्या काम की लागत का log base 2 होती है। चूँकि यह salt आउटपुट में अंतर्निहित रहता है, इसलिए एक ही पासवर्ड के दो bcrypt hash अलग-अलग string होते हैं, जिससे हमलावर उन खातों को पहचान नहीं पाता जो एक ही पासवर्ड साझा करते हैं। आउटपुट modular crypt format का उपयोग करता है: पहले एक version prefix, फिर cost, फिर salt का 22 अक्षरों वाला base64 encoding, फिर निकले हुए hash का 31 अक्षरों वाला encoding, सब dollar चिह्नों से अलग किए गए। व्यवहार में दो परिणाम मायने रखते हैं। पहला, bcrypt 72 bytes से आगे की input चुपचाप अनदेखी कर देता है, इसलिए उससे लंबा कोई भी पासवर्ड bcrypt से पहले pre-hash होना चाहिए, वरना prefix साझा करने वाले दो लंबे पासवर्ड एक-दूसरे की जगह ले लेंगे। दूसरा, algorithm जानबूझकर one-way है: पुष्टि के लिए सादा पासवर्ड चाहिए, और यही कारण है कि bcrypt कभी भी ऐसी किसी चीज़ के लिए नहीं इस्तेमाल होना चाहिए जिसे आपको वापस पढ़ना हो, जैसे कार्ड नंबर याद रखना।
कैसे उपयोग करें
- Bcrypt Generator को अपने ब्राउज़र में खोलें। Hashing स्थानीय रूप से होती है, इसलिए आपका पासवर्ड कहीं अपलोड नहीं होता।
- जिस पासवर्ड को hash करना है उसे इनपुट खाने में लिखें। लंबा passphrase विचार करें, क्योंकि लंबाई symbol बदलने से कहीं अधिक प्रतिरोध देती है।
- 4 से 15 के बीच कोई work factor चुनें, या यदि आप निश्चित नहीं हैं तो अनुशंसित default पर ही छोड़ दें। अधिक cost में समय अनुपात के अनुसार बढ़ता है और हमला कठिन होता है।
- cost के साथ दिखाया गया समय जाँचें और पुष्टि करें कि वह आपके लक्ष्य से मेल खाता है, जो production hardware पर आम तौर से 150 से 400 मिलीलीटर के बीच होता है।
- Hash बनाने के लिए Generate पर क्लिक करें, फिर निकली हुई string को version prefix, cost और salt सहित अपने password store में कॉपी करें।
- किसी integration का परीक्षण करते समय या संग्रहीत credentials migrate करते समय verify अनुभाग से पासवर्ड को मौजूदा hash के विरुद्ध जाँचें।
- केवल उसकी पूँछ नहीं, पूरी hash string संग्रहीत करें, क्योंकि bcrypt को बाद में पुष्टि करने के लिए version, cost और salt prefix मौजूद होना आवश्यक है।
उदाहरण
इनपुट: Password: correct-horse-battery-staple, cost 10
प्रक्रिया:
128-bit random salt, 2^10 EksBlowfish चक्कर, base64 encodeपरिणाम: 60 अक्षरों का hash जो $2b$10$ से शुरू होता है — पुष्टि के लिए वही सादा पाठ चाहिए
इनपुट: एक ही पासवर्ड को एक ही cost पर दो बार hash किया गया
प्रक्रिया:
हर invocation पर एक नया random salt बनता हैपरिणाम: एक जैसे input के लिए दो पूरी तरह अलग hash string
इनपुट: सामान्य server hardware पर cost की तुलना
प्रक्रिया:
Cost 10 में 2^10 चक्कर, cost 12 में 2^12, cost 14 में 2^14परिणाम: हर बढ़त लगभग चार गुना काम, यानी cost 14 का समय cost 10 से लगभग 16x
संबंधित खोजें
लोग यह भी खोजते हैं: bcrypt जनरेटर, bcrypt हैश, पासवर्ड हैश जनरेटर, bcrypt कॉस्ट फैक्टर, bcrypt सॉल्ट, पासवर्ड हैश करें।
bcrypt जनरेटरbcrypt हैशपासवर्ड हैश जनरेटरbcrypt कॉस्ट फैक्टरbcrypt सॉल्टपासवर्ड हैश करेंbcrypt हैश सत्यापित करेंbcrypt बनाम sha256bcrypt राउंडसॉल्टेड हैश बनाएंसुरक्षित पासवर्ड हैशिंगपासवर्ड हैशिंग टूलbcrypt ऑनलाइनargon2 विकल्पbcrypt वर्क फैक्टरnode bcryptpython bcryptवन-वे हैशbcrypt कॉस्ट 12ऑफलाइन पासवर्ड हैश
अक्सर पूछे जाने वाले प्रश्न
bcrypt के लिए कौन सा cost factor चुनना चाहिए?
अधिकांश production systems के लिए work factor 12 एक ठीक default है, जो सामान्य server hardware पर प्रति hash लगभग 250 से 400 मिलीलीटर देता है, जबकि cost 10 अब अक्सर आधुनिक GPUs वाले समर्पित हमलावर के विरुद्ध टिकने के लिए बहुत तेज़ है। महत्वपूर्ण गुण यह है कि आपको वह आंकड़ा चुनना चाहिए जो आपके अपने login flow को साधारण महसूस कराए, क्योंकि hashing प्रमाणीकरण के दौरान होती है और जो कुछ स्पष्ट रूप से धीमा है वह usability समस्या बन जाती है जो लोगों को दोबारा प्रमाणीकरण के shortcut की ओर धकेलती है। यदि आपके servers असामान्य रूप से शक्तिशाली हैं, तो cost 12 पर मापें और 13 या 14 तक बढ़ाएँ जब तक एक hash कुछ सौ मिलीलीटर न ले। कभी भी किसी दूसरी परियोजना का आंकड़ा कॉपी करके cost तय न करें, क्योंकि वह आंकड़ा केवल उस hardware के सापेक्ष अर्थ रखता है जो काम कर रहा है, और किसी भी संग्रहीत cost को समय के साथ दोबारा मापकर बढ़ाते रहें जैसे-जैसे hardware बेहतर हो।
एक ही पासवर्ड के दो hash अलग क्यों होते हैं?
क्योंकि bcrypt हर एक hash के लिए एक नया random 128-bit salt बनाता है। यह salt कोई रहस्य नहीं है, वह बस आउटपुट में दर्ज रहता है ताकि पुष्टि का चरण मूल गणना दोबारा बना सके, पर इसकी randomness सुनिश्चित करती है कि एक जैसे पासवर्ड अलग-अलग खातों में पूरी तरह असंबद्ध hash string बनाएँ। इससे precomputation attacks की एक बड़ी श्रेणी नाकाम हो जाती है, जिनमें rainbow tables भी शामिल हैं, जहाँ हमलावर हर संभावित पासवर्ड को पहले एक बार hash करके रखता है और फिर मिलान देखता है। यह एक सूक्ष्म leak भी रोकता है, जहाँ आपका user table हाथ में आ जाने पर हमलावर hash strings की तुलना करके तुरंत देख सकता था कि किन खातों का पासवर्ड एक जैसा है। व्यावहारिक निहितार्थ यह है कि आप संग्रहीत bcrypt hashes की तुलना करके दोबारा उपयोग का पता नहीं लगा सकते, और जाँच उम्मीदवार पासवर्ड verify करके ही करनी पड़ती है, और इसीलिए दोबारा उपयोग का पता लगाने के लिए दूसरे खातों पर पासवर्ड जानबूझकर आज़माना पड़ता है।
पासवर्ड संग्रहीत करने के लिए bcrypt बेहतर है या SHA-256?
bcrypt इस्तेमाल करें, और वजह कोई चतुर गणित नहीं बल्कि cost factor है। SHA-256 का एक चक्कर अत्यंत तेज़ चलने के लिए बनाया गया है, और पासवर्ड storage के लिए आपको ठीक यही नहीं चाहिए, क्योंकि एक GPU प्रति सेकंड करोड़ों की गणना कर सकता है और किसी ने leak हुई hash table के साथ परीक्षण करने वाले हमलावर को मुफ़्त अनुमानों की भारी संख्या मिल जाती है। bcrypt जानबूझकर धीमा है और इसकी प्रति hash लागत समायोज्य है, इसलिए आप hardware बेहतर होने के साथ इसे बढ़ा सकते हैं बिना संग्रहीत प्रारूप बदले। Argon2id अब जहाँ उपलब्ध हो वहाँ अक्सर पसंद किया जाता है और नए systems के लिए आम तौर पर वही मज़बूत सिफ़ारिश है, जबकि bcrypt पूरी तरह स्वीकार्य और बहुत व्यापक रूप से समर्थित बना रहता है। कभी भी पासवर्ड को सादा SHA-256, या किसी भी प्रकार के unsalted hash के रूप में संग्रहीत न करें, चाहे आप कोई भी algorithm चुनें।
क्या bcrypt hash को वापस मूल पासवर्ड में बदला जा सकता है?
नहीं, और पासवर्ड hash को encryption के बजाय चुनने का पूरा मकसद यही है। bcrypt एक one-way function है, इसलिए कोई key, कोई setting और कोई paid tool ऐसा नहीं है जो hash को पासवर्ड में वापस बदल दे। bcrypt hash से पासवर्ड वापस पाने का व्यावहारिक तरीका केवल यही है कि उम्मीदवार पासवर्डों का अनुमान लगाया जाए, हर एक को उसी cost और salt से hash किया जाए, और तुलना की जाए, और यही वह हमला है जिसे bcrypt धीमा करने के लिए बनाया गया है। इससे एक ऐसी शर्त भी समझ आती है जो लोगों को चौंका देती है: आप bcrypt का उपयोग ऐसी किसी चीज़ के लिए नहीं कर सकते जिसे आपको बाद में वापस पढ़ना हो, जैसे संग्रहीत कार्ड नंबर, ग्राहक encryption keys या reversible password recovery, क्योंकि सिस्टम मूल मान निकाल ही नहीं पाएगा। इनके लिए प्रबंधित key के साथ असली encryption चाहिए, one-way hash नहीं।
Hash संग्रहीत करते समय cost और salt भूल जाऊँ तो क्या होगा?
तब hash की कभी पुष्टि नहीं हो पाएगी और खाता बचा ही नहीं, क्योंकि bcrypt को गणना दोबारा बनाने के लिए string के चारों हिस्सों की ज़रूरत है। पूरा bcrypt hash होता है version prefix, cost, salt और निकला हुआ hash, dollar चिह्नों से जुड़ा हुआ, और वह हमेशा ठीक 60 अक्षर लंबा होता है। bcryptjs और Python के bcrypt package जैसी libraries एक ही generate call से पूरी string लौटाती हैं, इसलिए आपके database column में छँटा हुआ हिस्सा नहीं, पूरा मान संग्रहीत होना चाहिए। केवल अंतिम खंड, या केवल salt के बाद का हिस्सा संग्रहीत करने से हर उपयोगकर्ता का login चुपचाप टूट जाता है, और पासवर्ड की जितनी भी debugging की जाए कुछ नहीं होता। जिस column में bcrypt hashes रखने हैं, वहाँ 60 अक्षरों की लंबाई जाँचना एक उपयोगी sanity test है।
क्या bcrypt में पासवर्ड की कोई अधिकतम लंबाई है?
bcrypt पासवर्ड के केवल पहले 72 bytes देखता है और उसके आगे की हर चीज़ अनदेखी कर देता है, जो उसके Blowfish key schedule का ऐतिहासिक अवशेष है, कोई जानबूझकर सुरक्षा सीमा नहीं। व्यावहारिक परिणाम यह है कि 72 bytes से लंबे दो पासवर्ड, जो prefix साझा करते हैं, एक-दूसरे के विरुद्ध authenticate कर लेंगे, यानी 100 अक्षरों वाला passphrase जिसके पहले 72 bytes किसी दूसरे से मिलते हैं, वह उसी पासवर्ड माना जाएगा। यह लंबे passphrase के साथ वास्तविक जोखिम है, और लंबा passphrase ही वह चीज़ है जिसे आपको प्रोत्साहित करना चाहिए, तथा पूरे वाक्य जैसे लंबे मान आराम से सीमा से आगे निकल सकते हैं। मानक उपाय यह है कि पासवर्ड को पहले SHA-256 और base64 से pre-hash करें, फिर उस निश्चित लंबाई वाले परिणाम को bcrypt में दें। यदि आपकी भाषा की library यह स्वतः संभाल लेती है, तो उसी implementation को चुनें, वरना बहुत लंबे passphrase पर निर्भर रहने से पहले व्यवहार जाँच लें।