टूल
गाइड

bcrypt हैश और सत्यापन

क्रिप्टो

bcrypt (अनुकूली cost) से पासवर्ड हैश करें, या किसी मौजूदा $2a$ / $2b$ हैश के विरुद्ध सादा पाठ सत्यापित करें। समायोज्य cost, अंशांकित समय — सब कुछ आपके ब्राउज़र में।

100% क्लाइंट-साइड कोई बैकएंड नहीं

दूरस्थ URL लाए नहीं जाते; अपना JSON सीधे पेस्ट करें।

मोड
12

⚠ उच्च cost धीमा और अधिक सुरक्षित

पासवर्ड दर्ज करें, फिर हैश पर क्लिक करें (cost %n)।
bcrypt

🔒 स्थानीय रूप से संसाधित — कुछ भी ब्राउज़र से बाहर नहीं जाता
इस पृष्ठ पर

bcrypt क्या है?#

bcrypt एक पासवर्ड-हैशिंग फलन है जो विशेष रूप से जानबूझकर धीमा बनाया गया है। जहाँ SHA-256 जैसा कोई तेज़ हैश प्रति सेकंड मेगाबाइट्स प्रोसेस करने के लिए डिज़ाइन किया गया है, bcrypt एकल अनुमान के लिए वास्तविक समय लेने के लिए डिज़ाइन किया गया है — ताकि कोई हमलावर जो पासवर्ड हैशों का डेटाबेस चुराता है अरबों अनुमान सस्ते में न आज़मा सके। यह “मैं यूज़र पासवर्ड कैसे संग्रहित करूँ” का मानक जवाब है: उन्हें bcrypt से हैश करें, सादे SHA-256 से नहीं।

दो चीज़ें bcrypt को उस काम के लिए उपयुक्त बनाती हैं। पहला, इसमें एक ट्यूनेबल कॉस्ट फ़ैक्टर है जो काम को घातात्मक रूप से बढ़ाता है — कॉस्ट 1 बढ़ाने से प्रति हैश समय लगभग दोगुना हो जाता है, इसलिए हार्डवेयर को एक नॉब घुमाकर पीछे छोड़ा जा सकता है। दूसरा, यह हर हैश में एक यादृच्छिक साल्ट पकाता है, इसलिए समान पासवर्ड पूरी तरह अलग वैल्यूज़ में हैश होते हैं और एक डेटाबेस के लिए बनाई गई पूर्व-गणनित तालिका दूसरे के लिए बेकार है। साल्ट और कॉस्ट दोनों आउटपुट स्ट्रिंग के अंदर ढोए जाते हैं, इसलिए सत्यापन के लिए पासवर्ड और हैश के अलावा कुछ नहीं चाहिए।

यह पेज दोनों काम करता है: एक पासवर्ड को bcrypt स्ट्रिंग में हैश करें, और किसी मौजूदा हैश के विरुद्ध पासवर्ड सत्यापित करें। पेज को प्रतिक्रियाशील रखने के लिए, कॉस्ट 12 या उससे ऊपर की हैशिंग एक Web Worker में सौंपी जाती है, इसलिए भारी गणना कभी इंटरफ़ेस को फ़्रीज़ नहीं करती।

इसका उपयोग कैसे करें#

  1. कोई मोड चुनें: हैश (पासवर्ड से एक bcrypt स्ट्रिंग बनाएँ) या सत्यापित (किसी मौजूदा हैश के विरुद्ध पासवर्ड जाँचें)।
  2. पासवर्ड टाइप करें। टाइप करते समय प्रकट करने के लिए आँख आइकन पर क्लिक करें; यह डिफ़ॉल्ट रूप से मास्क्ड है। UTF-8 स्वीकार्य है, इमोज़ी और गैर-लैटिन लिपियों सहित।
  3. हैश मोड में, कॉस्ट स्लाइडर (4–14, डिफ़ॉल्ट 12) सेट करें। अधिक धीमा और अधिक मज़बूत। एक बार जब कॉस्ट ध्यान देने योग्य समय लेने लायक हो जाता है तो एक चेतावनी दिखती है।
  4. सत्यापित मोड में, दिखने वाले फ़ील्ड में मौजूदा हैश चिपकाएँ। कॉस्ट स्वतः हैश से पढ़ा जाता है — आप उसे सेट नहीं करते।
  5. प्राथमिक बटन पर क्लिक करें। हैश मोड में आउटपुट bcrypt स्ट्रिंग है; सत्यापित मोड में आउटपुट एक स्पष्ट मिलान / अनमिलान निर्णय है, साथ हिए एक बीता-समय रीडआउट जो आपको अपने हार्डवेयर पर कॉस्ट का अनुमान लगाने में मदद करता है।

प्रमुख विशेषताएँ#

  • ट्यूनेबल कॉस्ट, 4–14। 12 का डिफ़ॉल्ट आधुनिक अनुशंसा है; हर चरण काम को लगभग दोगुना करता है, इसलिए आप वर्षों में तेज़ हार्डवेयर के साथ कदम मिला सकते हैं।
  • उच्च कॉस्ट पर वर्कर ओफ़लोड। कॉस्ट 12 और ऊपर एक Web Worker में चलता है ताकि पेज प्रतिक्रियाशील रहे; यदि वर्कर्स अवरुद्ध हों तो यह पारदर्शी रूप से मुख्य थ्रेड पर उसी परिणाम के साथ फ़ॉलबैक करता है।
  • अंतर्निहित साल्ट। हर हैश को एक ताज़ा यादृच्छिक साल्ट मिलती है जो आउटपुट में एन्कोड होती है, इसलिए वही पासवर्ड कभी दो बार एक ही स्ट्रिंग में हैश नहीं होता।
  • स्वतः कॉस्ट के साथ सत्यापन। कॉस्ट फ़ैक्टर आपके द्वारा चिपकाए गए हैश से पार्स किया जाता है, इसलिए पासवर्ड हैश किए जाने के तरीके और जाँचे जाने के तरीके के बीच कोई बेमेल नहीं।
  • ज़ीरो अपलोड। हैशिंग और सत्यापन स्थानीय रूप से होते हैं; पासवर्ड कभी पेज से बाहर नहीं जाता।

कार्य उदाहरण#

नीचे hunter2 का कॉस्ट 12 पर एक वास्तविक हैश है, इसी पेज द्वारा बनाया गया। चूंकि साल्ट ताज़ा यादृच्छिक है, hunter2 को दोबारा हैश करने पर आपको एक अलग स्ट्रिंग मिलेगी — पर यह एक असली और सत्यापित करने योग्य है: इसे सत्यापित करें मोड में चिपकाएँ, hunter2 टाइप करें, और निर्णय match है।

$2b$12$DG/IWIDBmJlywamLdGno2.guEH5lGnQ1OTULdIGN8BH1vqiLIGzjy

इसे फ़ील्ड-दर-फ़ील्ड पढ़ें:

  • $2b$ — bcrypt वेरिएंट (bcryptjs $2b$ निकालता है; सत्यापन $2a$, $2x$, $2y$ भी स्वीकार करता है)।
  • 12 — कॉस्ट फ़ैक्टर, जिसका अर्थ है 2^12 कुंजी-विस्तार राउंड।
  • अगले 22 कैरेक्टर्स — यादृच्छिक साल्ट।
  • अंतिम 31 कैरेक्टर्स — निकाला गया हैश।

सत्यापित करें पर स्विच करें, ऊपर का हैश मौजूदा-हैश फ़ील्ड में डालें, hunter2 टाइप करें, और निर्णय match है। इसके बजाय Hunter2 टाइप करें और वह no match है — bcrypt केस-सेंसिटिव है, और एक गलत कैरेक्टर परिणाम पलट देता है। साथ दिखाया गया बीता-समय आंकड़ा आपके मशीन पर कॉस्ट 12 पर एक सत्यापन की वास्तविक लागत है।

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

मुझे कौन सा कॉस्ट चुनना चाहिए?#

12 आज नई प्रणालियों के लिए एक ठोस डिफ़ॉल्ट है — यह आम हार्डवेयर पर लगभग कुछ सौ मिलीसेकंड लेता है, जो एक वास्तविक लॉगिन के लिए दर्दरहित है पर थोक अनुमान हाज़िर करने के लिए दर्दनाक है। उच्च-मूल्य वाले लक्ष्यों के लिए जहाँ थोड़ा धीमा लॉगिन स्वीकार्य है इसे 13 या 14 तक बढ़ाएँ। मुख्य नियम है वर्षों में हार्डवेयर सुधार के साथ ऊपर की ओर दोबारा-ट्यून करना, क्योंकि bcrypt का कॉस्ट घातात्मक रूप से बढ़ता है: 1 की हर वृद्धि समय को लगभग दोगुना करती है।

वही पासवर्ड दो बार हैश करने पर अलग परिणाम क्यों मिलते हैं?#

क्योंकि bcrypt हर बार एक ताज़ा यादृच्छिक साल्ट बनाता है और उसे आउटपुट में जड़ता है। दोनों हैश कुछ भी मिलते-जुलते नहीं दिखते, फिर भी दोनों उसी पासवर्ड के विरुद्ध सत्यापित होते हैं। यही साल्टिंग का पूरा मतलब है — यह दोहराए गए पासवर्ड्स को पहचानने या पूर्व-गणनित तालिका पुनः उपयोग करने से हमलावर को रोकती है।

क्या मैं कहीं और जनरेट किए गए हैश को सत्यापित कर सकता हूँ?#

हाँ, बशर्ते वह एक वेल-फ़ॉर्म्ड bcrypt स्ट्रिंग हो ($2a$, $2b$, $2x$, या $2y$)। इसे सत्यापित करें मोड में मौजूदा-हैश फ़ील्ड में चिपकाएँ; औज़ार कॉस्ट और साल्ट हैश से ही पढ़ता है। Node के bcrypt, PHP के password_hash, या Python के passlib से निर्यात किए गए हैश यहाँ काम करते हैं।

क्या पासवर्ड्स के लिए bcrypt SHA-256 से बेहतर है?#

लॉगिन पासवर्ड संग्रहित करने के लिए, हाँ — स्पष्ट रूप से। SHA-256 तेज़ है, जो ठीक वह गलत गुण है जो संग्रहित पासवर्ड हैश के लिए ज़रूरी है: हैश रखने वाला कोई हमलावर GPU पर प्रति सेकंड अरबों अनुमान आज़मा सकता है। bcrypt जानबूझकर धीमा और साल्टेड है, जो पासवर्ड भंडारण माँगता है। अखंडता और हस्ताक्षरों के लिए SHA-256 उपयोग करें; मानव पासवर्ड्स के लिए bcrypt (या उसके सगे-संबंधी Argon2/scrypt) उपयोग करें।