হ্যাশ শনাক্তকরণ হলো এমন একটি প্রক্রিয়া যার মাধ্যমে নির্ধারণ করা হয় কোন ক্রিপ্টোগ্রাফিক হ্যাশ অ্যালগরিদম একটি নির্দিষ্ট ডাইজেস্ট তৈরি করেছে। MD5, SHA-1 এবং SHA-256-এর মতো ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশনগুলো প্রতিটি নির্দিষ্ট দৈর্ঘ্যের আউটপুট তৈরি করে এবং এই আউটপুটের দৈর্ঘ্যই একটি অজানা হ্যাশ শনাক্ত করার প্রাথমিক সংকেত। যখন আপনি কোনো ডেটাবেস ডাম্প, কনফিগারেশন ফাইল বা API প্রতিক্রিয়ায় একটি হেক্সাডেসিমেল স্ট্রিং দেখতে পান, তখন একটি হ্যাশ শনাক্তকরণ টুল জানিয়ে দেয় কোন অ্যালগরিদম সম্ভবত এটি তৈরি করেছে।
প্রতিটি হ্যাশ অ্যালগরিদম যেকোনো ইনপুট ডেটাকে একটি নির্দিষ্ট আকারের আউটপুটে রূপান্তরিত করে, যাকে ডাইজেস্ট বলা হয়। MD5 সর্বদা ১২৮ বিট (৩২টি hex অক্ষর), SHA-1 সর্বদা ১৬০ বিট (৪০টি hex অক্ষর) এবং SHA-256 সর্বদা ২৫৬ বিট (৬৪টি hex অক্ষর) আউটপুট তৈরি করে। এই নির্ধারিত আউটপুট দৈর্ঘ্যই মূল ইনপুট বা হ্যাশিং কোড ছাড়াই অ্যালগরিদম শনাক্তকরণকে সম্ভব করে।
শুধুমাত্র দৈর্ঘ্যের ভিত্তিতে শনাক্তকরণ সর্বদা নিশ্চিত নয়। একাধিক অ্যালগরিদম একই আকারের আউটপুট তৈরি করতে পারে — উদাহরণস্বরূপ, SHA-256 এবং SHA3-256 উভয়ই ৬৪-অক্ষরের hex ডাইজেস্ট তৈরি করে। এই ক্ষেত্রে, একটি হ্যাশ শনাক্তকারী প্রচলনের ভিত্তিতে সম্ভাব্য অ্যালগরিদমের একটি তালিকা প্রদান করে। উৎস সিস্টেম, এনকোডিং ফরম্যাট (hex বনাম Base64) এবং অ্যালগরিদম প্রিফিক্সের উপস্থিতি (যেমন bcrypt-এর জন্য '$2b$') সম্ভাবনার পরিসর আরও সংকুচিত করতে সাহায্য করে।
হ্যাশ শনাক্তকারী কেন ব্যবহার করবেন?
নিরাপত্তা নিরীক্ষা, ডেটাবেস মাইগ্রেশন এবং ফরেনসিক বিশ্লেষণের সময় অজানা হ্যাশ নিয়মিতভাবে সামনে আসে। একটি হ্যাশ শনাক্তকারী অনুমানের প্রয়োজন দূর করে এবং সেকেন্ডের মধ্যে সঠিক অ্যালগরিদম নির্দেশ করে।
⚡
তাৎক্ষণিক শনাক্তকরণ
একটি হ্যাশ পেস্ট করুন এবং সাথে সাথে সম্ভাব্য অ্যালগরিদম পান। ম্যানুয়ালি অক্ষর গণনা করার বা রেফারেন্স টেবিল দেখার প্রয়োজন নেই — টুলটি স্বয়ংক্রিয়ভাবে hex দৈর্ঘ্যকে সকল মিলে যাওয়া অ্যালগরিদমে ম্যাপ করে।
🔒
গোপনীয়তা-প্রথম বিশ্লেষণ
সমস্ত শনাক্তকরণ সম্পূর্ণভাবে আপনার ব্রাউজারে JavaScript ব্যবহার করে চলে। হ্যাশের মান কখনো আপনার ডিভাইস ছেড়ে যায় না, যা পাসওয়ার্ড হ্যাশ, প্রমাণীকরণ টোকেন বা সংবেদনশীল ফরেনসিক প্রমাণ বিশ্লেষণের সময় গুরুত্বপূর্ণ।
📋
সম্পূর্ণ অ্যালগরিদম কভারেজ
MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 এবং তাদের SHA-3 সমতুল্যগুলো শনাক্ত করে। রেফারেন্স টেবিলে সম্পূর্ণ SHA-2 এবং SHA-3 পরিবার এবং RIPEMD-160 ও BLAKE2-এর মতো সাধারণ বিকল্পগুলো অন্তর্ভুক্ত রয়েছে।
🚫
কোনো অ্যাকাউন্ট বা ইনস্টলেশন নেই
যেকোনো আধুনিক ব্রাউজারে তাৎক্ষণিকভাবে কাজ করে। কোনো নিবন্ধন, API কী বা CLI টুল ইনস্টল করার প্রয়োজন নেই। বুকমার্ক করুন এবং যখনই অজানা হ্যাশের সামনে পড়বেন ব্যবহার করুন — যেকোনো অপারেটিং সিস্টেমে, যেকোনো ডিভাইসে।
হ্যাশ শনাক্তকারীর ব্যবহারের ক্ষেত্র
নিরাপত্তা নিরীক্ষা
পেনিট্রেশন পরীক্ষার সময়, ফাঁস হওয়া ডেটাবেসে পাসওয়ার্ড হ্যাশ অ্যালগরিদম শনাক্ত করা ক্র্যাকিং পদ্ধতি নির্ধারণ করে। MD5 এবং SHA-1 হ্যাশ দুর্বল সুরক্ষা নির্দেশ করে এবং প্রতিকারের জন্য অগ্রাধিকার দেওয়া যায়।
ডেটাবেস মাইগ্রেশন
সিস্টেমের মধ্যে ব্যবহারকারীর রেকর্ড স্থানান্তর করার সময়, নতুন প্রমাণীকরণ স্তর সঠিকভাবে কনফিগার করতে সংরক্ষিত পাসওয়ার্ড হ্যাশ অ্যালগরিদম জানা আবশ্যক। অ্যালগরিদম ভুলভাবে শনাক্ত হলে সমস্ত লগইন ব্যর্থ হয়।
DevOps এবং CI/CD
বিল্ড পাইপলাইনে প্রায়ই আর্টিফ্যাক্ট যাচাইয়ের জন্য চেকসাম অন্তর্ভুক্ত থাকে। একটি চেকসাম SHA-256 নাকি SHA-512 তা শনাক্ত করা নিশ্চিত করে যে আপনি ডিপ্লয়মেন্ট স্ক্রিপ্টে সঠিক যাচাইকরণ কমান্ড ব্যবহার করছেন।
ডিজিটাল ফরেনসিক্স
ফরেনসিক পরীক্ষকরা ফাইল অখণ্ডতা লগ, ব্লকচেইন রেকর্ড এবং প্রমাণ মেটাডেটায় হ্যাশ ডাইজেস্টের সম্মুখীন হন। প্রমাণের চেইন-অব-কাস্টডি যাচাই করার পূর্বশর্ত হলো অ্যালগরিদম শনাক্ত করা।
API ইন্টিগ্রেশন
তৃতীয় পক্ষের API-গুলো কখনো কখনো অ্যালগরিদম নথিভুক্ত না করে হ্যাশ মান ফেরত দেয়। প্রতিক্রিয়া থেকে হ্যাশের ধরন শনাক্ত করলে ওয়েবহুক সিগনেচার যাচাইকরণ বা চেকসাম ভ্যালিডেশন সঠিকভাবে কনফিগার করা যায়।
ক্রিপ্টোগ্রাফি শেখা
ক্রিপ্টোগ্রাফি কোর্সে অধ্যয়নরত শিক্ষার্থীরা বিভিন্ন অ্যালগরিদম দ্বারা তৈরি হ্যাশ পেস্ট করে অ্যালগরিদম পছন্দ, আউটপুট দৈর্ঘ্য এবং নিরাপত্তা বৈশিষ্ট্যের মধ্যে সম্পর্ক তাৎক্ষণিকভাবে দেখতে পারেন।
হ্যাশ অ্যালগরিদম দৈর্ঘ্য রেফারেন্স
নিচের টেবিলটি প্রতিটি সাধারণ হ্যাশ অ্যালগরিদমকে বিট, hex অক্ষর এবং কাঁচা বাইটে তার আউটপুট আকারের সাথে ম্যাপ করে। হ্যাশ শনাক্তকরণ টুলগুলো এই প্রাথমিক লুকআপ টেবিলটি ব্যবহার করে। যখন একাধিক অ্যালগরিদম একই hex দৈর্ঘ্য ভাগ করে, তখন সেগুলো আলাদা করতে অতিরিক্ত প্রেক্ষাপট প্রয়োজন।
অ্যালগরিদম
বিট
Hex অক্ষর
বাইট
মন্তব্য
MD5
128
32
16
Broken — collisions trivial since 2004
SHA-1
160
40
20
Deprecated — SHAttered attack (2017)
SHA-224
224
56
28
Truncated SHA-256; rarely used standalone
SHA-256
256
64
32
Current standard; TLS, Git, Bitcoin
SHA-384
384
96
48
Truncated SHA-512; CNSA Suite approved
SHA-512
512
128
64
Maximum SHA-2 output; large-data hashing
SHA3-256
256
64
32
Keccak-based; NIST alternative to SHA-2
SHA3-512
512
128
64
Keccak-based; highest SHA-3 strength
RIPEMD-160
160
40
20
Used in Bitcoin address derivation
BLAKE2s
256
64
32
Faster than SHA-256; 256-bit output
হ্যাশ দৈর্ঘ্যের অস্পষ্টতা দূর করা
কিছু hex দৈর্ঘ্য একাধিক অ্যালগরিদমের সাথে মিলে যায়। সবচেয়ে সাধারণ দুটি অস্পষ্টতা হলো ৬৪-অক্ষরের হ্যাশ (SHA-256 বনাম SHA3-256) এবং ৪০-অক্ষরের হ্যাশ (SHA-1 বনাম RIPEMD-160)। দৈর্ঘ্য একা যথেষ্ট না হলে সেগুলো কীভাবে আলাদা করবেন তা নিচে দেওয়া হলো।
৬৪ hex অক্ষর: SHA-256 বনাম SHA3-256
উভয়ই ২৫৬-বিট (৬৪-অক্ষর) ডাইজেস্ট তৈরি করে। SHA-256 ব্যবহারিক ক্ষেত্রে অনেক বেশি প্রচলিত — Git কমিট, TLS সার্টিফিকেট, Bitcoin ব্লক এবং অধিকাংশ API সিগনেচার SHA-256 ব্যবহার করে। SHA3-256 সাধারণত কেবল সেই সিস্টেমে পাওয়া যায় যেগুলো স্পষ্টভাবে NIST SP 800-185 সম্মতি বা Keccak-ভিত্তিক নির্মাণ প্রয়োজন করে। নিশ্চিত করতে উৎস সিস্টেমের ডকুমেন্টেশন দেখুন।
৪০ hex অক্ষর: SHA-1 বনাম RIPEMD-160
SHA-1 হলো অনেক বেশি প্রচলিত ১৬০-বিট হ্যাশ — ঐতিহাসিকভাবে Git-এ (SHA-256 রূপান্তরের আগে), TLS এবং কোড সাইনিংয়ে ব্যবহৃত হয়েছে। RIPEMD-160 প্রধানত Bitcoin ঠিকানা তৈরিতে (HASH160 = SHA-256 এর পর RIPEMD-160) দেখা যায়। হ্যাশটি যদি ক্রিপ্টোকারেন্সি প্রেক্ষাপট থেকে আসে, RIPEMD-160 বিবেচনা করুন; অন্যথায় SHA-1 সম্ভাব্য প্রার্থী।
কোড উদাহরণ
নিচে চারটি প্রোগ্রামিং ভাষায় hex দৈর্ঘ্য দ্বারা হ্যাশ শনাক্তকরণের কার্যকরী বাস্তবায়ন দেওয়া হয়েছে। প্রতিটি ফাংশন hex এনকোডিং যাচাই করে, অক্ষর সংখ্যা অনুসন্ধান করে এবং সমস্ত মিলে যাওয়া অ্যালগরিদম ফেরত দেয়।
package main
import (
"fmt"
"regexp"
)
var hexPattern = regexp.MustCompile("^[0-9a-fA-F]+$")
var hashLengths = map[int][]string{
32: {"MD5"},
40: {"SHA-1", "RIPEMD-160"},
56: {"SHA-224", "SHA3-224"},
64: {"SHA-256", "SHA3-256", "BLAKE2s"},
96: {"SHA-384", "SHA3-384"},
128: {"SHA-512", "SHA3-512", "BLAKE2b"},
}
func identifyHash(hex string) []string {
if !hexPattern.MatchString(hex) {
return []string{"Not a hex-encoded hash"}
}
if algos, ok := hashLengths[len(hex)]; ok {
return algos
}
return []string{fmt.Sprintf("Unknown (%d hex chars)", len(hex))}
}
func main() {
fmt.Println(identifyHash("d41d8cd98f00b204e9800998ecf8427e"))
// → [MD5]
}
CLI (Bash)
#!/bin/bash
# Identify a hash from the command line by character count
hash="$1"
if [[ ! "$hash" =~ ^[0-9a-fA-F]+$ ]]; then
echo "Not a hex-encoded hash"
exit 1
fi
len=${#hash}
case $len in
32) echo "MD5 (128-bit)" ;;
40) echo "SHA-1 or RIPEMD-160 (160-bit)" ;;
56) echo "SHA-224 or SHA3-224 (224-bit)" ;;
64) echo "SHA-256 or SHA3-256 (256-bit)" ;;
96) echo "SHA-384 or SHA3-384 (384-bit)" ;;
128) echo "SHA-512 or SHA3-512 (512-bit)" ;;
*) echo "Unknown hash length: $len chars" ;;
esac
# Usage: ./identify.sh d41d8cd98f00b204e9800998ecf8427e
# → MD5 (128-bit)
সচরাচর জিজ্ঞাসা
হ্যাশ শনাক্তকরণ কীভাবে কাজ করে?
হ্যাশ শনাক্তকরণ প্রাথমিকভাবে hex-এনকোড করা ডাইজেস্টের দৈর্ঘ্যের উপর নির্ভর করে। প্রতিটি হ্যাশ অ্যালগরিদম নির্দিষ্ট সংখ্যক আউটপুট বিট তৈরি করে: MD5 ১২৮ বিট (৩২ hex অক্ষর), SHA-1 ১৬০ বিট (৪০ hex অক্ষর), SHA-256 ২৫৬ বিট (৬৪ hex অক্ষর) এবং এভাবে চলতে থাকে। শনাক্তকারী স্ট্রিংয়ের দৈর্ঘ্য পরিমাপ করে, যাচাই করে যে এতে কেবল হেক্সাডেসিমেল অক্ষর রয়েছে এবং পরিচিত অ্যালগরিদম আউটপুট আকারের সাথে ম্যাপ করে।
একটি হ্যাশ শনাক্তকারী কি নিশ্চিতভাবে সঠিক অ্যালগরিদম নির্ধারণ করতে পারে?
সর্বদা নয়। একাধিক অ্যালগরিদম একই আউটপুট দৈর্ঘ্য তৈরি করতে পারে। SHA-256 এবং SHA3-256 উভয়ই ৬৪টি hex অক্ষর আউটপুট দেয়। SHA-1 এবং RIPEMD-160 উভয়ই ৪০টি hex অক্ষর আউটপুট দেয়। এই ক্ষেত্রে, টুলটি সমস্ত সম্ভাব্য প্রার্থী ফেরত দেয়। একটি নির্দিষ্ট অ্যালগরিদমে সীমাবদ্ধ করতে উৎস সিস্টেম, ডকুমেন্টেশন বা অ্যালগরিদম প্রিফিক্সের প্রেক্ষাপট প্রয়োজন।
যদি আমার হ্যাশ hex-এর পরিবর্তে Base64-এনকোড করা হয় তাহলে কী করব?
Base64-এনকোড করা হ্যাশ ভিন্ন অক্ষর সেট (A-Z, a-z, 0-9, +, /) ব্যবহার করে এবং তাদের hex সমতুল্যের চেয়ে ভিন্ন দৈর্ঘ্য থাকে। একটি ২৫৬-বিট হ্যাশ ৪৪টি Base64 অক্ষর কিন্তু ৬৪টি hex অক্ষর। প্রথমে Base64 স্ট্রিংটি কাঁচা বাইটে ডিকোড করুন, তারপর বাইটের দৈর্ঘ্য পরীক্ষা করুন: ১৬ বাইট = MD5, ২০ বাইট = SHA-1, ৩২ বাইট = SHA-256, ৪৮ বাইট = SHA-384, ৬৪ বাইট = SHA-512।
অনলাইন শনাক্তকারীতে পাসওয়ার্ড হ্যাশ পেস্ট করা কি নিরাপদ?
এই টুলটি সম্পূর্ণভাবে আপনার ব্রাউজারে চলে — কোনো সার্ভারে কোনো ডেটা প্রেরণ করা হয় না। হ্যাশ কখনো আপনার ডিভাইস ছেড়ে যায় না। তবে, আনুষ্ঠানিক নিরীক্ষার সময় সর্বোচ্চ অপারেশনাল নিরাপত্তার জন্য, আপনি ব্রাউজারের ডেভেলপার টুলে নেটওয়ার্ক ট্যাব পরীক্ষা করে বা পেজ লোড হওয়ার পর অফলাইনে টুলটি ব্যবহার করে এটি যাচাই করতে পারেন।
MD5 ক্রিপ্টোগ্রাফিকভাবে ভাঙা হলেও কেন এখনো ব্যবহৃত হয়?
MD5 কোলিশন প্রতিরোধের জন্য ভাঙা — একজন আক্রমণকারী দুটি ভিন্ন ইনপুট তৈরি করতে পারে যা একই হ্যাশ তৈরি করে। তবে, MD5 এখনো অ-নিরাপত্তা প্রেক্ষাপটে ব্যবহৃত হয়: ডাউনলোড যাচাইয়ের জন্য ফাইল চেকসাম, ক্যাশ কী, ডিডুপ্লিকেশন এবং HTTP-তে ETag। এই উদ্দেশ্যে, আকস্মিক কোলিশন অসম্ভব রকম বিরল এবং ইচ্ছাকৃত আক্রমণ উদ্বেগের বিষয় নয়। পাসওয়ার্ড হ্যাশিং, ডিজিটাল স্বাক্ষর বা সার্টিফিকেট যাচাইকরণে MD5 ব্যবহার করা উচিত নয়।
আমি কীভাবে bcrypt, scrypt বা Argon2 হ্যাশ শনাক্ত করব?
bcrypt, scrypt এবং Argon2-এর মতো পাসওয়ার্ড হ্যাশিং ফাংশনগুলো কাঁচা hex আউটপুটের পরিবর্তে স্বতন্ত্র স্ট্রিং প্রিফিক্স ব্যবহার করে। Bcrypt হ্যাশ '$2a$', '$2b$' বা '$2y$' দিয়ে শুরু হয় এবং তারপর একটি কস্ট ফ্যাক্টর থাকে। Argon2 হ্যাশ '$argon2id$' বা '$argon2i$' দিয়ে শুরু হয়। Scrypt হ্যাশ সাধারণত '$scrypt$' দিয়ে শুরু হয়। এগুলো কাঁচা ক্রিপ্টোগ্রাফিক ডাইজেস্ট নয়, তাই দৈর্ঘ্য-ভিত্তিক শনাক্তকরণ প্রযোজ্য নয় — প্রিফিক্সই অ্যালগরিদম শনাক্ত করে।
SHA-2 এবং SHA-3-এর মধ্যে পার্থক্য কী?
SHA-2 (যার মধ্যে SHA-256, SHA-384 এবং SHA-512 অন্তর্ভুক্ত) NSA-ডিজাইন করা Merkle-Damgard নির্মাণের উপর ভিত্তি করে এবং FIPS 180-4-এ মানকীকৃত। SHA-3 (SHA3-256, SHA3-384, SHA3-512) Keccak স্পঞ্জ নির্মাণের উপর ভিত্তি করে, একটি সর্বজনীন NIST প্রতিযোগিতার মাধ্যমে নির্বাচিত এবং FIPS 202-এ মানকীকৃত। এগুলো একই নিরাপত্তা স্তরে একই আউটপুট দৈর্ঘ্য তৈরি করে, কিন্তু মৌলিকভাবে ভিন্ন অভ্যন্তরীণ কাঠামো ব্যবহার করে। SHA-3 SHA-2-এ কাঠামোগত দুর্বলতা পাওয়া গেলে বিকল্প হিসেবে ডিজাইন করা হয়েছিল, যদিও এখন পর্যন্ত এমন কোনো দুর্বলতা প্রদর্শিত হয়নি।