HMAC জেনারেটর
SHA-256, SHA-384, SHA-512 বা SHA-1 অ্যালগরিদম ব্যবহার করে একটি সিক্রেট কী দিয়ে HMAC (হ্যাশ-ভিত্তিক বার্তা প্রমাণীকরণ কোড) তৈরি করুন
ইনপুট
আউটপুট
রিডমি
HMAC কি?
HMAC (Hash-based Message Authentication Code) একটি ক্রিপ্টোগ্রাফিক কৌশল যা একটি গোপনীয় কী এবং একটি হ্যাশ ফাংশনকে একত্রিত করে একটি অনন্য প্রমাণীকরণ কোড তৈরি করে। সাধারণ হ্যাশিং এর বিপরীতে, HMAC ডেটা অখণ্ডতা এবং সত্যতা উভয়ই নিশ্চিত করে—যাচাই করে যে একটি বার্তা পরিবর্তিত হয়নি এবং প্রেরকের পরিচয় নিশ্চিত করে।
HMAC বার্তাটিকে একটি হ্যাশ ফাংশনের মাধ্যমে (SHA-256 এর মতো) দুইবার প্রক্রিয়া করে কাজ করে, গোপনীয় কীর সাথে একটি নির্দিষ্ট উপায়ে মিশ্রিত। এই দ্বিগুণ-হ্যাশিং পদ্ধতি এটিকে দৈর্ঘ্য সম্প্রসারণ আক্রমণের বিরুদ্ধে প্রতিরোধী করে তোলে যা সাধারণ হ্যাশ ফাংশনকে প্রভাবিত করে।
HMAC কীভাবে কাজ করে?
HMAC অ্যালগরিদম এই পদক্ষেপগুলি অনুসরণ করে:
- কী প্রস্তুতি: যদি গোপনীয় কী হ্যাশ ব্লক সাইজের চেয়ে দীর্ঘ হয়, তবে এটি প্রথমে হ্যাশ করা হয়। যদি ছোট হয়, তবে এটি শূন্য দিয়ে প্যাড করা হয়।
- অভ্যন্তরীণ হ্যাশ: কীটি একটি অভ্যন্তরীণ প্যাডিং ধ্রুবক (ipad) এর সাথে XOR করা হয়, তারপর বার্তার সাথে সংযুক্ত করা হয় এবং হ্যাশ করা হয়।
- বাহ্যিক হ্যাশ: কীটি একটি বাহ্যিক প্যাডিং ধ্রুবক (opad) এর সাথে XOR করা হয়, তারপর অভ্যন্তরীণ হ্যাশ ফলাফলের সাথে সংযুক্ত করা হয় এবং আবার হ্যাশ করা হয়।
সূত্রটি হল: HMAC(K, m) = H((K ⊕ opad) || H((K ⊕ ipad) || m))
এই নির্মাণ নিশ্চিত করে যে এমনকি যদি একজন আক্রমণকারী একটি বার্তার হ্যাশ জানে, তারা গোপনীয় কী না জেনে একটি বৈধ HMAC জাল করতে পারে না।
সাধারণ হ্যাশিং এর পরিবর্তে HMAC কেন ব্যবহার করবেন?
| বৈশিষ্ট্য | সাধারণ হ্যাশ | HMAC |
|---|---|---|
| ডেটা অখণ্ডতা | ✓ | ✓ |
| প্রমাণীকরণ | ✗ | ✓ |
| গোপনীয় কী প্রয়োজন | ✗ | ✓ |
| দৈর্ঘ্য সম্প্রসারণ থেকে সুরক্ষা | ✗ | ✓ |
| API প্রমাণীকরণের জন্য উপযুক্ত | ✗ | ✓ |
সাধারণ হ্যাশ (MD5, SHA-256) শুধুমাত্র যাচাই করে যে ডেটা পরিবর্তিত হয়নি। HMAC অতিরিক্তভাবে প্রমাণ করে যে বার্তাটি এমন কেউ থেকে এসেছে যে গোপনীয় কী জানে, এটি নিরাপদ যোগাযোগের জন্য অপরিহার্য করে তোলে।
হ্যাশ অ্যালগরিদম বোঝা
| অ্যালগরিদম | আউটপুট সাইজ | নিরাপত্তা স্তর | কর্মক্ষমতা | সুপারিশ |
|---|---|---|---|---|
| SHA-1 | 160 বিট (40 হেক্স অক্ষর) | দুর্বল | দ্রুততম | শুধুমাত্র লিগেসি সিস্টেম |
| SHA-256 | 256 বিট (64 হেক্স অক্ষর) | শক্তিশালী | দ্রুত | প্রস্তাবিত ডিফল্ট |
| SHA-384 | 384 বিট (96 হেক্স অক্ষর) | অত্যন্ত শক্তিশালী | মধ্যম | উচ্চ-নিরাপত্তা প্রয়োজন |
| SHA-512 | 512 বিট (128 হেক্স অক্ষর) | অত্যন্ত শক্তিশালী | মধ্যম | সর্বোচ্চ নিরাপত্তা |
SHA-256 বেশিরভাগ অ্যাপ্লিকেশনের জন্য নিরাপত্তা এবং কর্মক্ষমতার সেরা ভারসাম্য প্রদান করে। SHA-1 লিগেসি সিস্টেমের সাথে সামঞ্জস্যের জন্য অন্তর্ভুক্ত করা হয়েছে কিন্তু পরিচিত দুর্বলতার কারণে নতুন বাস্তবায়নের জন্য এড়ানো উচিত।
আউটপুট ফরম্যাট তুলনা
হেক্সাডেসিমাল: 0-9 এবং a-f অক্ষর ব্যবহার করে। একটি দীর্ঘ স্ট্রিং তৈরি করে কিন্তু পড়া এবং ডিবাগ করা সহজ। API এবং লগিং এ সাধারণ।
Base64: A-Z, a-z, 0-9, +, এবং / অক্ষর ব্যবহার করে। একটি ছোট স্ট্রিং তৈরি করে (হেক্সের চেয়ে প্রায় 33% ছোট)। JWT টোকেন এবং কমপ্যাক্ট ডেটা ট্রান্সমিশনে সাধারণ।
একই HMAC এর উদাহরণ:
- হেক্স:
5d5d139563c95b5967b9bd9a8c9b8c8d8e8f9a9b9c9d9e9f0a0b0c0d0e0f1011 - Base64:
XV0TlWPJW1lnub2ajJuMjY6Pmpm9nZ6fCgsMDQ4PEQ==
টুল বর্ণনা
এই HMAC জেনারেটর Web Crypto API ব্যবহার করে ক্রিপ্টোগ্রাফিক প্রমাণীকরণ কোড তৈরি করে নিরাপদ, ক্লায়েন্ট-সাইড গণনার জন্য। আপনার বার্তা এবং গোপনীয় কী প্রবেশ করান তাৎক্ষণিকভাবে HMAC স্বাক্ষর তৈরি করতে আপনার পছন্দের হ্যাশ অ্যালগরিদম (SHA-1, SHA-256, SHA-384, বা SHA-512) এবং আউটপুট ফরম্যাট (হেক্সাডেসিমাল বা base64) সহ।
সমস্ত প্রক্রিয়াকরণ সম্পূর্ণভাবে আপনার ব্রাউজারে ঘটে—আপনার গোপনীয় কী এবং বার্তা কখনও কোনও সার্ভারে প্রেরণ করা হয় না, সম্পূর্ণ গোপনীয়তা এবং নিরাপত্তা নিশ্চিত করে।
উদাহরণ
উদাহরণ 1: API অনুরোধ স্বাক্ষর
- বার্তা:
GET /api/users?timestamp=1704067200 - গোপনীয় কী:
my-api-secret-key-2024 - অ্যালগরিদম: SHA-256
- আউটপুট (হেক্স):
d090e24b18ee077bdeceacab17fb15ff8cf7868147b302dbcb1b11630465e817
বৈশিষ্ট্য
- একাধিক হ্যাশ অ্যালগরিদম: SHA-1, SHA-256, SHA-384, এবং SHA-512 এর জন্য সমর্থন বিট শক্তি দেখানো ভিজ্যুয়াল সূচক সহ
- দ্বৈত আউটপুট ফরম্যাট: আপনার প্রয়োজন অনুযায়ী হেক্সাডেসিমাল বা Base64 এনকোডিং এ ফলাফল তৈরি করুন
- রিয়েল-টাইম জেনারেশন: আপনি টাইপ করার সাথে সাথে HMAC তাৎক্ষণিকভাবে আপডেট হয়, কোনও বোতাম ক্লিক প্রয়োজন নেই
- ক্লায়েন্ট-সাইড নিরাপত্তা: Web Crypto API ব্যবহার করে সমস্ত ক্রিপ্টোগ্রাফিক অপারেশন স্থানীয়ভাবে সম্পাদিত—সার্ভারে কিছু পাঠানো হয় না
- পাসওয়ার্ড-সুরক্ষিত ইনপুট: গোপনীয় কী ক্ষেত্র ডিফল্টরূপে মাস্ক করা হয় কাঁধের উপর দিয়ে দেখা প্রতিরোধ করতে
ব্যবহারের ক্ষেত্র
- API প্রমাণীকরণ: অনুরোধের সত্যতা প্রমাণ করতে এবং ট্যাম্পারিং প্রতিরোধ করতে HMAC দিয়ে API অনুরোধে স্বাক্ষর করুন (AWS, Stripe, এবং অনেক অন্যান্য সেবা দ্বারা ব্যবহৃত)
- Webhook যাচাইকরণ: যাচাই করুন যে আসন্ন webhooks সত্যিই প্রত্যাশিত সেবা থেকে উদ্ভূত হয়েছে (GitHub, Shopify, Twilio)
- বার্তা অখণ্ডতা: নিশ্চিত করুন যে সিস্টেমের মধ্যে প্রেরিত বার্তা ট্রানজিটে পরিবর্তিত হয়নি
- সেশন টোকেন জেনারেশন: নিরাপদ সেশন শনাক্তকারী তৈরি করুন যা ডাটাবেস লুকআপ ছাড়াই যাচাই করা যায়
- ডকুমেন্টের জন্য ডিজিটাল স্বাক্ষর: চুক্তি, চুক্তি, বা পক্ষের মধ্যে শেয়ার করা সংবেদনশীল ডকুমেন্টের জন্য যাচাইযোগ্য স্বাক্ষর তৈরি করুন
নিরাপত্তা সেরা অনুশীলন
- কী দৈর্ঘ্য: হ্যাশ আউটপুটের মতো কমপক্ষে দীর্ঘ গোপনীয় কী ব্যবহার করুন (SHA-256 এর জন্য 32 বাইট, SHA-512 এর জন্য 64 বাইট)
- কী র্যান্ডমনেস: ক্রিপ্টোগ্রাফিকভাবে নিরাপদ র্যান্ডম সংখ্যা জেনারেটর ব্যবহার করে কী তৈরি করুন, পাসওয়ার্ড নয়
- কী স্টোরেজ: কখনও সোর্স কোডে কী হার্ডকোড করবেন না; পরিবেশ ভেরিয়েবল বা নিরাপদ কী ম্যানেজমেন্ট সিস্টেম ব্যবহার করুন
- অ্যালগরিদম নির্বাচন: SHA-256 বা শক্তিশালী ব্যবহার করুন; নতুন বাস্তবায়নের জন্য SHA-1 এড়ান
- ধ্রুবক-সময় তুলনা: HMAC প্রোগ্রামেটিকভাবে যাচাই করার সময়, টাইমিং আক্রমণ প্রতিরোধ করতে ধ্রুবক-সময় তুলনা ফাংশন ব্যবহার করুন
সাধারণ HMAC বাস্তবায়ন
JavaScript (Node.js):
const crypto = require("crypto");
const hmac = crypto
.createHmac("sha256", secretKey)
.update(message)
.digest("hex");Python:
import hmac
import hashlib
signature = hmac.new(secret_key.encode(), message.encode(), hashlib.sha256).hexdigest()PHP:
$signature = hash_hmac('sha256', $message, $secretKey);সম্পর্কিত মান এবং বিশেষ উল্লেখ
- RFC 2104: HMAC: Keyed-Hashing for Message Authentication
- FIPS 198-1: The Keyed-Hash Message Authentication Code (HMAC)
- RFC 4868: Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 with IPsec