MD5 Hash Generator
किसी भी टेक्स्ट से MD5 हैश जेनरेट करें
इनपुट टेक्स्ट
MD5 हैश
MD5 हैश यहाँ दिखाई देगा…
MD5 हैशिंग क्या है?
MD5 (Message-Digest Algorithm 5) एक क्रिप्टोग्राफ़िक हैश फ़ंक्शन है जो किसी भी आकार के इनपुट से एक निश्चित 128-बिट (16-बाइट) डाइजेस्ट उत्पन्न करता है। 1992 में Ronald Rivest द्वारा RFC 1321 के रूप में प्रकाशित, MD5 को MD4 के एक तेज़ उत्तराधिकारी के रूप में डिज़ाइन किया गया था और यह इंटरनेट पर सबसे अधिक उपयोग किए जाने वाले हैश फ़ंक्शनों में से एक बन गया। यह एल्गोरिथम इनपुट को 512-बिट के खंडों में संसाधित करता है, प्रत्येक खंड में 16-16 संक्रियाओं के चार चक्र होते हैं, और प्रत्येक चक्र में एक भिन्न अरैखिक फ़ंक्शन का उपयोग होता है, जिससे 32-वर्णों का हेक्साडेसिमल फ़िंगरप्रिंट प्राप्त होता है।
हैश फ़ंक्शन एकतरफा रूपांतरण है: दिए गए इनपुट से आप तत्काल हैश की गणना कर सकते हैं, परंतु केवल हैश से मूल इनपुट पुनः प्राप्त नहीं किया जा सकता। इनपुट में एक भी बिट का परिवर्तन पूरी तरह अलग डाइजेस्ट उत्पन्न करता है — इस गुण को एवलांश प्रभाव कहते हैं। MD5 एक अनंत इनपुट स्थान को निश्चित 128-बिट आउटपुट स्थान पर मैप करता है, इसलिए टकराव (दो भिन्न इनपुट से एक ही हैश) गणितीय रूप से अवश्यंभावी हैं, परंतु एक सुरक्षित हैश फ़ंक्शन उन्हें खोजना संगणनात्मक रूप से असंभव बना देता है।
2004 से शोधकर्ताओं ने MD5 के विरुद्ध व्यावहारिक टकराव आक्रमण प्रदर्शित किए हैं, जिसका अर्थ है कि यह डिजिटल हस्ताक्षर, प्रमाणपत्र, या किसी भी संदर्भ के लिए जहाँ टकराव-प्रतिरोध आवश्यक हो, अब सुरक्षित नहीं माना जाता। तथापि, MD5 गैर-सुरक्षा उद्देश्यों के लिए व्यापक रूप से उपयोग में रहता है: डाउनलोड के बाद फ़ाइल अखंडता सत्यापित करने, कैश कुंजियाँ जेनरेट करने, सामग्री को अनुपालित करने और स्ट्रिंग से निर्धारक पहचानकर्ता बनाने के लिए। इन अनुप्रयोगों में, एल्गोरिथम की गति और सर्वव्यापी लाइब्रेरी समर्थन इसे व्यावहारिक विकल्प बनाता है। 2008 में Marc Stevens और सहयोगियों ने एक चुनित-उपसर्ग टकराव आक्रमण प्रकाशित किया, जिसका अर्थ है कि कोई आक्रमणकर्ता मनमाने चुनित उपसर्गों के साथ दो दस्तावेज़ तैयार कर सकता है जो एक ही डाइजेस्ट साझा करते हैं। यह तकनीक 2008 के Chaos Communication Congress में एक दुर्भावनापूर्ण Certification Authority प्रमाणपत्र बनाकर प्रदर्शित की गई थी। 2012 के Flame मालवेयर ने बाद में एक Microsoft कोड-साइनिंग प्रमाणपत्र जाली बनाने के लिए चुनित-उपसर्ग टकराव का दोहन किया, जिससे मालवेयर वैध Windows Update पैकेज के रूप में प्रदर्शित हो सका। इन वास्तविक दोहनों ने पुष्टि की कि यह एल्गोरिथम किसी भी विश्वास-आधारित उपयोग के लिए क्रिप्टोग्राफ़िक रूप से टूटा हुआ है।
यह MD5 जनरेटर क्यों उपयोग करें?
कुछ भी इंस्टॉल किए बिना या कोड लिखे बिना तत्काल MD5 हैश जेनरेट करें। अपना टेक्स्ट चिपकाएँ और वास्तविक समय में 32-वर्णों का हेक्स डाइजेस्ट प्राप्त करें।
MD5 के उपयोग के मामले
MD5 बनाम अन्य हैश एल्गोरिथम
MD5 सामान्य हैश एल्गोरिथम में सबसे तेज़ और सबसे छोटा है, परंतु यह सबसे कमज़ोर सुरक्षा गारंटी प्रदान करता है। नीचे दी गई तालिका प्रत्येक एल्गोरिथम के लिए डाइजेस्ट आकार, मानक और उपयुक्त उपयोग के मामलों की तुलना करती है।
| एल्गोरिथम | डाइजेस्ट आकार | हेक्स लंबाई | मानक | सर्वोत्तम उपयोग |
|---|---|---|---|---|
| MD5 | 128 bits | 32 hex chars | 1992 / RFC 1321 | Checksums, non-security fingerprints |
| SHA-1 | 160 bits | 40 hex chars | 1995 / RFC 3174 | Legacy git commits (being replaced) |
| SHA-256 | 256 bits | 64 hex chars | 2001 / FIPS 180-4 | TLS certificates, blockchain, JWTs |
| SHA-384 | 384 bits | 96 hex chars | 2001 / FIPS 180-4 | Government systems, higher security margin |
| SHA-512 | 512 bits | 128 hex chars | 2001 / FIPS 180-4 | Digital signatures, HMAC with large keys |
| SHA-3 | 256 bits | 64 hex chars | 2015 / FIPS 202 | Post-quantum readiness, backup standard |
| BLAKE3 | 256 bits | 64 hex chars | 2020 | High-performance checksums, Merkle trees |
MD5 कैसे काम करता है
MD5 एक Merkle-Damgård संरचना के माध्यम से इनपुट संसाधित करता है: संदेश को 512 बिट के गुणज तक पैड किया जाता है, खंडों में विभाजित किया जाता है, और प्रत्येक खंड को 16 बिटवाइज़ संक्रियाओं के चार चक्रों से गुज़ारा जाता है जो इनपुट को पूर्वगणित साइन-व्युत्पन्न स्थिरांकों के साथ मिश्रित करते हैं। परिणाम एक 128-बिट अवस्था है जो अंतिम डाइजेस्ट बन जाती है।
प्रत्येक चक्र चार 32-बिट अवस्था शब्दों (A, B, C, D) में से तीन पर एक भिन्न अरैखिक सहायक फ़ंक्शन लागू करता है। चक्र 1 F(B,C,D) = (B AND C) OR (NOT B AND D) — एक बिटवाइज़ सशर्त चयनकर्ता — उपयोग करता है। चक्र 2 G(B,C,D) = (B AND D) OR (C AND NOT D) — एक पूरक चयनकर्ता — उपयोग करता है। चक्र 3 H(B,C,D) = B XOR C XOR D — एक समता फ़ंक्शन — उपयोग करता है। चक्र 4 I(B,C,D) = C XOR (B OR NOT D) — एक असममित संयोजक — उपयोग करता है। ये चार फ़ंक्शन सुनिश्चित करते हैं कि इनपुट का प्रत्येक बिट आउटपुट डाइजेस्ट को प्रभावित करे, जिससे एवलांश प्रभाव उत्पन्न होता है।
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)
एल्गोरिथम पाँच चरणों में आगे बढ़ता है: (1) एक 1-बिट जोड़ें, फिर शून्य जोड़ें जब तक संदेश लंबाई 448 mod 512 न हो; (2) मूल संदेश लंबाई को 64-बिट लिटिल-एंडियन पूर्णांक के रूप में जोड़ें; (3) चार 32-बिट अवस्था चरों (A, B, C, D) को निश्चित स्थिरांकों से आरंभ करें; (4) प्रत्येक 512-बिट खंड को 64 संक्रियाओं के माध्यम से संसाधित करें जिसमें चार अरैखिक फ़ंक्शन (F, G, H, I) हों, प्रत्येक 16 संक्रियाओं के एक चक्र के लिए; (5) परिणामी अवस्था को चालू योग में जोड़ें और अंतिम 128-बिट हैश को लिटिल-एंडियन बाइट क्रम में आउटपुट करें।
कोड उदाहरण
लोकप्रिय भाषाओं और परिवेशों में MD5 हैश जेनरेट करने का तरीका। ध्यान दें कि MD5 ब्राउज़र Web Crypto API में उपलब्ध नहीं है — किसी लाइब्रेरी या Node.js का उपयोग करें।
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module
// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"
// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"import hashlib
# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result) # → "5eb63bbbe01eeed093cb22bb8f5acdc3"
# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"
# Hash a file
with open('file.bin', 'rb') as f:
md5 = hashlib.md5()
for chunk in iter(lambda: f.read(8192), b''):
md5.update(chunk)
print(md5.hexdigest())package main
import (
"crypto/md5"
"fmt"
)
func main() {
data := []byte("hello world")
hash := md5.Sum(data)
fmt.Printf("%x\n", hash)
// → 5eb63bbbe01eeed093cb22bb8f5acdc3
}# Using md5sum (Linux) or md5 (macOS) echo -n "hello world" | md5sum # → 5eb63bbbe01eeed093cb22bb8f5acdc3 - # macOS echo -n "hello world" | md5 # → 5eb63bbbe01eeed093cb22bb8f5acdc3 # Hash a file md5sum package.json # → a1b2c3d4e5f6... package.json # Using openssl (cross-platform) echo -n "hello world" | openssl md5 # → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3