HMAC জেনারেটর
ক্রিপ্টোWeb Crypto দিয়ে HMAC-SHA-1/256/384/512 স্বাক্ষর গণনা করুন। Hex বা Base64 আউটপুট, সম্পূর্ণ আপনার ব্রাউজারে।
দূরবর্তী URL আনা হয় না; আপনার JSON সরাসরি পেস্ট করুন।
এই পৃষ্ঠায়
HMAC কী?#
HMAC দাঁড়ায় Hash-based Message Authentication Code (হ্যাশ-ভিত্তিক বার্তা প্রমাণীকরণ কোড)। একটি সাধারণ হ্যাশ (যেমন SHA-256) এই প্রশ্নের উত্তর দেয় “এই বাইট স্ট্রিম কি পরিবর্তিত হয়েছে?”। HMAC আরও শক্তিশালী একটি প্রশ্নের উত্তর দেয়: “এই বাইট স্ট্রিম কি পরিবর্তিত হয়েছে, এবং এটি কি এমন কেউ পাঠিয়েছে যে আসলে আমার গোপন কী শেয়ার করে?”। যখনই একটি বার্তা এমন একটি চ্যানেলে চলাচল করে যা আপনি সম্পূর্ণ বিশ্বাস করেন না তখন পার্থক্যটি গুরুত্বপূর্ণ — webhook কলব্যাক, স্বাক্ষরিত URL, API অনুরোধ স্বাক্ষর, আন্তঃ-পরিষেবা টোকেন।
যান্ত্রিকভাবে, HMAC একটি গোপন কী কে সংজ্ঞায়িত উপায়ে হ্যাশ ফাংশনে মিশ্রিত করে (প্যাডিং সহ দুটি রাউন্ড) যাতে কী ছাড়া ডাইজেস্ট জাল করা যায় না। আউটপুট হলো একটি নির্দিষ্ট-দৈর্ঘ্যের বাইট স্ট্রিং যার আকার অন্তর্নিহিত হ্যাশের সাথে মেলে: SHA-1-এর জন্য 20 বাইট, SHA-256-এর জন্য 32, SHA-384-এর জন্য 48, SHA-512-এর জন্য 64।
এই পৃষ্ঠাটি আপনার ব্রাউজারে Web Crypto API ব্যবহার করে HMAC গণনা করে। আপনি হ্যাশ বাছেন, বার্তা এবং গোপন কী পেস্ট করেন, এবং ডাইজেস্ট hex বা base64 হিসেবে পান।
ব্যবহারবিধি#
- বার্তা টাইপ করুন বা পেস্ট করুন — আপনি যে পেলোডটি প্রমাণীকরণ করতে চান। এটি সেই বাইট যা গ্রহণকারী তাদের পাশে হ্যাশ করবে।
- গোপন কী লিখুন। ফিল্ডটি ডিফল্টভাবে মাস্ক করা; টাইপ করার সময় প্রকাশ করতে ডানদিকের চোখ বোতামটি ক্লিক করুন। কী এবং বার্তা উভয়ই UTF-8 হিসেবে এনকোড করা হয়।
- অ্যালগরিদম বেছে নিন:
- SHA-1 — 160-বিট। দ্রুত, কিন্তু শুধুমাত্র লিগেসি HMAC-এর জন্য উপযুক্ত (কিছু পুরোনো স্বাক্ষর প্রবাহ এখনও এটি বাধ্যতামূলক করে)। ডিজিটাল স্বাক্ষরের জন্য SHA-1 ব্যবহার করবেন না।
- SHA-256 — 256-বিট। আধুনিক ডিফল্ট; webhook স্বাক্ষরের বিশাল সংখ্যাগরিষ্ঠতা (Stripe, GitHub, Slack-স্টাইল প্রবাহ) HMAC-SHA-256 ব্যবহার করে।
- SHA-384 / SHA-512 — দীর্ঘতর ডাইজেস্ট, সামান্য বেশি সংঘর্ষ প্রতিরোধ, সামান্য ধীর। যখন গ্রহণকারী সিস্টেম স্পষ্টভাবে এটি প্রয়োজন করে তখন একটি বেছে নিন।
- আউটপুট এনকোডিং বেছে নিন: hex (
X-Signature-স্টাইলের হেডারের জন্য সাধারণ) বা base64 (সাধারণ যখন ডাইজেস্ট JSON বা একটি টোকেনে এম্বেড করা থাকে)। - তৈরি ক্লিক করুন। ডাইজেস্ট ডান পেইনে উপস্থিত হয়; স্ট্যাটাস লাইন একটি সমীক্ষা হিসেবে অ্যালগরিদম এবং বাইট দৈর্ঘ্য দেখায়। নেওয়ার জন্য কপি।
মূল বৈশিষ্ট্য#
- Web Crypto দ্বারা সমর্থিত। ব্রাউজারের নেটিভ
crypto.subtleব্যবহার করে, একই আদিম প্রোডাকশন কোড ব্যবহার করে — একটি JavaScript পুনরায়-বাস্তবায়ন নয়। - দৈর্ঘ্য সমীক্ষা। প্রতিটি ডাইজেস্ট তার অ্যালগরিদমের জন্য প্রত্যাশিত বাইট দৈর্ঘ্যের বিরুদ্ধে যাচাই করা হয়, তাই একটি ছাঁটাই করা বা কালেভদ্র করা ফলাফল নীরবে পিছলে যেতে পারে না।
- Hex বা base64 আউটপুট। এক ক্লিকে স্যুইচ; কোনো পুনরায় টাইপ নেই।
- গোপন স্থানীয় থাকে। কী ফিল্ড একটি পাসওয়ার্ড ইনপুট হিসেবে রেন্ডার করা হয় এবং কখনো পৃষ্ঠা ছাড়ে না — কোনো ব্যাকএন্ড নেই।
- নিরাপদ-প্রসঙ্গ সচেতন। পৃষ্ঠাটি যদি কখনো সরল HTTP-এর উপর লোড করা হয়,
crypto.subtleঅনুপলব্ধ এবং টুলটি একটি ভুল উত্তর তৈরি করার বদলে তা স্পষ্টভাবে রিপোর্ট করে।
ব্যবহারিক উদাহরণ#
ক্লাসিক রেফারেন্স জোড়া (RFC 4231) Jefe কী এবং what do ya want for nothing? বার্তা ব্যবহার করে। এই পৃষ্ঠাটি SHA-256 এবং hex-এ সেট করা অবস্থায়, ডাইজেস্ট হলো:
5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843
একই ইনপুট সহ SHA-512-এ স্যুইচ করুন এবং ডাইজেস্ট দৈর্ঘ্যে দ্বিগুণ হয়:
164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737
আপনি দুটোই এখানে পুনরুৎপাদন করতে পারেন: নমুনা লোড করুন, তারপর তৈরি। এই সঠিক জোড়াটি এছাড়াও এই টুলের নিজস্ব টেস্ট স্যুট কীভাবে সঠিকতা যাচাই করে — আপনি যদি কখনো ভিন্ন ডাইজেস্ট পান, পৃষ্ঠাটির সাথে কিছু কালেভদ্র করা হয়েছে।
প্রশ্নোত্তর#
SHA-256 নাকি SHA-512 — আমার কোনটি ব্যবহার করা উচিত?#
HMAC-এর ক্ষেত্রে বিশেষভাবে, SHA-256 হলো ব্যবহারিক ডিফল্ট: প্রতিটি প্রধান webhook স্বাক্ষরকারী এটি ব্যবহার করে, এটি দ্রুত, এবং 256 বিট ডাইজেস্ট ইতিমধ্যেই ব্রুট-ফোর্স অঞ্চলের অনেক উপরে। শুধুমাত্র তখনই SHA-512-এ যান যখন (ক) গ্রহণকারী সিস্টেম এটি প্রয়োজন করে, বা (খ) আপনি নতুন করে একটি প্রোটোকল ডিজাইন করছেন এবং একটি পরিমিত গতি খরচে অতিরিক্ত সংঘর্ষ মার্জিন চান। সম্পূর্ণভাবে SHA-1 এড়িয়ে চলুন — যদি না আপনি এমন কোনো লিগেসি সিস্টেমের সাথে মেলাচ্ছেন যা এটি বাধ্যতামূলক করে।
HMAC কি বার্তা এনক্রিপ্ট করার মতো একই?#
না। HMAC শুধুমাত্র প্রমাণীকরণ করে — এটি প্রমাণ করে বার্তাটি পরিবর্তিত হয়নি এবং কী ধারণকারী কারও কাছ থেকে এসেছে। বার্তাটি নিজেই প্লেইন টেক্সটে থাকে। আপনার যদি গোপনীয়তাও প্রয়োজন হয়, HMAC-কে একটি এনক্রিপশন স্কিমের সাথে যুক্ত করুন, বা AES-GCM-এর মতো একটি প্রমাণীকৃত-এনক্রিপশন মোড ব্যবহার করুন।
গোপন কী কি ডাইজেস্ট থেকে পুনরুদ্ধার করা যায়?#
না। ডাইজেস্ট হলো বার্তা এবং কী উভয়েরই একটি একমুখী ফাংশন; আউটপুট থেকে কী পুনরুদ্ধার করা গণনামূলকভাবে অকল্পনীয়। তা সত্ত্বেও, একটি ছোট বা অনুমেয় কী এখনও অফলাইনে প্রার্থী কী চেষ্টা করে ব্রুট-ফোর্স করা যেতে পারে — তাই এমন একটি কী ব্যবহার করুন যাতে অন্তত 128 বিট প্রকৃত এনট্রপি আছে, একটি মানব-নির্বাচিত পাসওয়ার্ড নয়।
গ্রহণকারী বলছে আমার স্বাক্ষর মেলে না। আমি প্রথমে কী পরীক্ষা করব?#
দশবারের নয়বার এটি বার্তার বাইট উপস্থাপনা: শেষের নিউলাইন, URL-এনকোডিং বনাম কাঁচা বডি, JSON হোয়াইটস্পেস, বা একটি ভিন্ন ফিল্ড ক্রম। অন্য কিছু পরীক্ষা করার আগে আপনি যা স্বাক্ষর করেছেন তার সঠিক বাইটগুলোকে গ্রহণকারী যা হ্যাশ করেছে তার সাথে, অক্ষরে অক্ষরে তুলনা করুন।