SHA-256 vs bcrypt vs Argon2 - डेवलपर्स के लिए हैशिंग एल्गोरिदम की संपूर्ण तुलना
जानें कि पासवर्ड स्टोरेज के लिए SHA-256 का उपयोग क्यों नहीं करना चाहिए, bcrypt और Argon2 के बीच अंतर, और 2026 की अनुशंसित हैशिंग रणनीति।
Toolypet Team
Development Team
SHA-256 vs bcrypt vs Argon2: कब क्या उपयोग करें?
"अगर मैं पासवर्ड को SHA-256 से हैश करके स्टोर करूं, तो यह सुरक्षित होना चाहिए, है ना?"
कई डेवलपर्स यह सवाल पूछते हैं। निष्कर्ष है: पासवर्ड के लिए SHA-256 का उपयोग नहीं करना चाहिए।
यह गाइड हैशिंग एल्गोरिदम के बीच अंतर और प्रत्येक स्थिति के लिए सही विकल्प की व्याख्या करती है।
हैशिंग बनाम एन्क्रिप्शन: मूल अवधारणाएं
हैशिंग
इनपुट → हैश फ़ंक्शन → निश्चित लंबाई आउटपुट (अपरिवर्तनीय)
"password" → SHA-256 → "5e884898da28047d..."
- एकतरफा: मूल को पुनर्प्राप्त नहीं किया जा सकता
- निर्धारक: समान इनपुट = समान आउटपुट
- निश्चित लंबाई: आउटपुट का आकार इनपुट आकार से स्वतंत्र
एन्क्रिप्शन
इनपुट + कुंजी → एन्क्रिप्शन → सिफरटेक्स्ट → डिक्रिप्शन + कुंजी → मूल
"password" + key → AES → "Xyz..." → AES + key → "password"
- द्विदिश: कुंजी के साथ मूल पुनर्प्राप्त करने योग्य
- कुंजी-निर्भर: कुंजी के बिना डिक्रिप्ट नहीं किया जा सकता
पासवर्ड स्टोरेज के लिए हैशिंग का उपयोग करें। आपको मूल की आवश्यकता नहीं है — बस इनपुट मान की तुलना हैश से करें।
हैशिंग एल्गोरिदम वर्गीकरण
तेज़ हैश
| एल्गोरिदम | आउटपुट लंबाई | गति | उपयोग मामला |
|---|---|---|---|
| MD5 | 128 बिट | बहुत तेज़ | ❌ सुरक्षा के लिए उपयोग न करें |
| SHA-1 | 160 बिट | तेज़ | ❌ सुरक्षा के लिए उपयोग न करें |
| SHA-256 | 256 बिट | तेज़ | फ़ाइल अखंडता, डिजिटल हस्ताक्षर |
| SHA-512 | 512 बिट | तेज़ | फ़ाइल अखंडता, ब्लॉकचेन |
धीमा हैश (पासवर्ड हैश)
| एल्गोरिदम | विशेषताएं | 2026 अनुशंसा |
|---|---|---|
| bcrypt | समय समायोज्य (cost) | ✅ |
| scrypt | मेमोरी-गहन | ✅ |
| Argon2 | नवीनतम, OWASP #1 | ✅✅ |
| PBKDF2 | उच्च संगतता | ⚠️ लीगेसी |
SHA-256 से पासवर्ड क्यों नहीं स्टोर करना चाहिए?
कारण 1: बहुत तेज़
SHA-256 गति के लिए डिज़ाइन किया गया है। यह फ़ाइल अखंडता जांच के लिए फायदा है, लेकिन पासवर्ड स्टोरेज के लिए घातक दोष है।
आधुनिक GPU प्रदर्शन:
- MD5: 180 अरब हैश/सेकंड
- SHA-256: 10 अरब हैश/सेकंड
- bcrypt (cost 12): 1,000 हैश/सेकंड
8-वर्ण का जटिल पासवर्ड भी SHA-256 से स्टोर करने पर मिनटों में क्रैक हो सकता है।
कारण 2: मैन्युअल Salt प्रबंधन आवश्यक
# ❌ गलत तरीका
hash = sha256(password)
# समस्या: Rainbow Table हमलों के प्रति संवेदनशील
# ⚠️ सुधार किया लेकिन अभी भी अपर्याप्त
salt = generate_random_salt()
hash = sha256(salt + password)
# समस्या: अभी भी बहुत तेज़
कारण 3: GPU त्वरण भेद्यता
SHA-256 GPU पर आसानी से समानांतर किया जाता है। हमलावर कुछ गेमिंग GPU के साथ जबरदस्त गति से हैश की गणना कर सकते हैं।
bcrypt: 27 साल का सिद्ध मानक
यह कैसे काम करता है
bcrypt(cost, salt, password) → hash
cost: गणना पुनरावृत्तियों की संख्या (2^cost)
salt: 22-वर्ण रैंडम स्ट्रिंग (स्वतः-जनरेट)
bcrypt सुरक्षित क्यों है?
- जानबूझकर धीमा: cost factor द्वारा गति नियंत्रित
- स्वचालित Salt: हर बार अलग हैश
- मेमोरी-गहन: GPU त्वरण मुश्किल
Cost Factor गाइड (2026)
| Cost | हैश समय | अनुशंसित उपयोग |
|---|---|---|
| 10 | ~100ms | डेवलपमेंट/टेस्टिंग |
| 12 | ~250ms | सामान्य वेब ऐप्स (अनुशंसित) |
| 13-14 | ~500ms | उच्च सुरक्षा आवश्यकताएं |
| 15+ | 1सेकंड+ | विशेष उद्देश्य |
कोड उदाहरण
// Node.js with bcrypt
const bcrypt = require('bcrypt');
// हैशिंग (साइनअप)
const hash = await bcrypt.hash(password, 12); // cost 12
// सत्यापन (लॉगिन)
const isValid = await bcrypt.compare(inputPassword, storedHash);
# Python with bcrypt
import bcrypt
# हैशिंग
hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt(rounds=12))
# सत्यापन
is_valid = bcrypt.checkpw(input_password.encode(), stored_hash)
Argon2: अगली पीढ़ी का मानक
Argon2 क्या है?
2015 Password Hashing Competition का विजेता। यह OWASP द्वारा 2026 के लिए #1 अनुशंसित एल्गोरिदम है।
Argon2 वेरिएंट
| वेरिएंट | विशेषताएं | अनुशंसा |
|---|---|---|
| Argon2d | GPU हमला प्रतिरोधी | साइड-चैनल कमजोर |
| Argon2i | साइड-चैनल प्रतिरोधी | GPU हमला कमजोर |
| Argon2id | d + i हाइब्रिड | ✅ अनुशंसित |
Argon2 पैरामीटर
Argon2id(memory, iterations, parallelism, password, salt)
- memory: मेमोरी उपयोग (KB)
- iterations: पुनरावृत्तियों की संख्या
- parallelism: समानांतर थ्रेड्स की संख्या
OWASP अनुशंसित सेटिंग्स (2026)
न्यूनतम सेटिंग्स:
- memory: 64MB (65536 KB)
- iterations: 3
- parallelism: 4
उच्च सुरक्षा:
- memory: 256MB
- iterations: 4
- parallelism: 8
कोड उदाहरण
// Node.js with argon2
const argon2 = require('argon2');
// हैशिंग
const hash = await argon2.hash(password, {
type: argon2.argon2id,
memoryCost: 65536, // 64MB
timeCost: 3,
parallelism: 4
});
// सत्यापन
const isValid = await argon2.verify(storedHash, inputPassword);
# Python with argon2-cffi
from argon2 import PasswordHasher
ph = PasswordHasher(
memory_cost=65536,
time_cost=3,
parallelism=4
)
# हैशिंग
hash = ph.hash(password)
# सत्यापन
try:
ph.verify(stored_hash, input_password)
except VerifyMismatchError:
# पासवर्ड मेल नहीं खाता
bcrypt बनाम Argon2: किसे चुनें?
तुलना तालिका
| आइटम | bcrypt | Argon2id |
|---|---|---|
| आयु | 1999 (27 साल) | 2015 (11 साल) |
| सत्यापन | 27 साल फील्ड-प्रूवेन | अकादमिक रूप से मान्य |
| मेमोरी ट्यूनिंग | ❌ | ✅ |
| GPU प्रतिरोध | ⚠️ मध्यम | ✅ मजबूत |
| लाइब्रेरी | सभी भाषाएं | अधिकांश भाषाएं |
| OWASP रैंकिंग | #2 | #1 |
चयन गाइड
bcrypt चुनें:
- लीगेसी सिस्टम संगतता आवश्यक
- सिद्ध स्थिरता पसंद
- सरल कॉन्फ़िगरेशन पसंद
Argon2id चुनें:
- नया प्रोजेक्ट शुरू कर रहे हैं
- नवीनतम सुरक्षा मानकों का पालन
- उच्च GPU प्रतिरोध आवश्यक
2026 अनुशंसा क्रम (OWASP)
#1: Argon2id
#2: bcrypt
#3: scrypt
#4: PBKDF2 (जब संगतता आवश्यक हो)
SHA-256 कब उपयोग करें
SHA-256 पासवर्ड के अलावा अन्य उद्देश्यों के लिए उत्तम है।
उपयुक्त उपयोग मामले
| उपयोग मामला | उदाहरण |
|---|---|
| फ़ाइल अखंडता | डाउनलोड सत्यापन, बैकअप पुष्टि |
| डिजिटल हस्ताक्षर | JWT, प्रमाणपत्र |
| ब्लॉकचेन | बिटकॉइन माइनिंग |
| चेकसम | डेटा ट्रांसमिशन सत्यापन |
| हैश टेबल | (HMAC के साथ) API कुंजी स्टोरेज |
कोड उदाहरण
// फ़ाइल हैश (Node.js)
const crypto = require('crypto');
const fs = require('fs');
const fileBuffer = fs.readFileSync('file.zip');
const hash = crypto.createHash('sha256').update(fileBuffer).digest('hex');
console.log(hash); // "a1b2c3d4..."
व्यावहारिक कार्यान्वयन चेकलिस्ट
पासवर्ड स्टोरेज
- Argon2id या bcrypt का उपयोग करें
- उचित work factor सेट करें (250-500ms)
- लाइब्रेरी ऑटो salt जनरेशन का उपयोग करें
- पूर्ण हैश परिणाम स्टोर करें (salt सहित)
पासवर्ड सत्यापन
- टाइमिंग-अटैक-सेफ तुलना फ़ंक्शन का उपयोग करें
- सत्यापन विफलता पर सुसंगत प्रतिक्रिया समय
- असफल लॉगिन प्रयासों को सीमित करें
माइग्रेशन
- नए हैश में क्रमिक अपग्रेड
- सफल लॉगिन पर नए एल्गोरिदम के साथ री-हैश
- पुराने हैश की पहचान के लिए prefix का उपयोग करें
अक्सर पूछे जाने वाले प्रश्न
Q1: MD5 से स्टोर किए गए मौजूदा पासवर्ड कैसे संभालें?
A: जब उपयोगकर्ता लॉगिन करें तो नए एल्गोरिदम से री-हैश करें।
// सफल लॉगिन पर
if (hash.startsWith('$md5$')) {
// bcrypt से री-हैश
const newHash = await bcrypt.hash(inputPassword, 12);
await updateUserHash(userId, newHash);
}
Q2: क्या bcrypt की 72-बाइट सीमा समस्या नहीं है?
A: अधिकांश पासवर्ड 72 बाइट के भीतर हैं। लंबे इनपुट के लिए, पहले SHA-256 से हैश करें, फिर bcrypt लागू करें।
// लंबे पासवर्ड को संभालना
const prehash = crypto.createHash('sha256').update(password).digest('base64');
const finalHash = await bcrypt.hash(prehash, 12);
Q3: क्या उच्च cost factor आपको DoS हमलों के प्रति कमजोर नहीं बनाता?
A: हां। लॉगिन अनुरोधों पर rate limiting लागू करें। 250-500ms उचित संतुलन है।
Q4: क्या pepper आवश्यक है?
A: pepper (एप्लिकेशन-स्तर गुप्त कुंजी) अतिरिक्त सुरक्षा प्रदान करता है लेकिन आवश्यक नहीं है। केवल salt पर्याप्त है।
Q5: क्या मैं ऑनलाइन हैश टूल का उपयोग कर सकता हूं?
A: केवल सीखने/परीक्षण उद्देश्यों के लिए उपयोग करें। प्रोडक्शन में, हैशिंग सर्वर-साइड की जानी चाहिए। हैश जनरेटर सुरक्षित है क्योंकि यह 100% क्लाइंट-साइड प्रोसेस करता है।
निष्कर्ष
| उपयोग मामला | अनुशंसित एल्गोरिदम |
|---|---|
| पासवर्ड स्टोरेज | Argon2id > bcrypt |
| फ़ाइल अखंडता | SHA-256 |
| डिजिटल हस्ताक्षर | SHA-256 / SHA-512 |
| लीगेसी संगतता | bcrypt / PBKDF2 |
मुख्य सिद्धांत:
- पासवर्ड के लिए कभी तेज़ हैश (SHA-256, MD5) का उपयोग न करें
- bcrypt cost 12+, Argon2 memory 64MB+
- लाइब्रेरी-प्रदत्त ऑटो salt जनरेशन का उपयोग करें
संबंधित उपकरण
| उपकरण | उद्देश्य |
|---|---|
| Hash Generator | SHA-256, bcrypt हैश जनरेट करें |
| Password Generator | मजबूत पासवर्ड जनरेट करें |
लेखक के बारे में
Toolypet Team
Development Team
The Toolypet Team creates free, privacy-focused web tools for developers and designers. All tools run entirely in your browser with no data sent to servers.