HMAC একটি ফ্রেমওয়ার্ক, যা ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন ব্যবহার করে মেসেজ অথেন্টিকেশনের জন্য ব্যবহৃত হয়। HMAC MD5, SHA-1 ইত্যাদির জন্য ব্যবহার করা যায়।
ক্রিপ্টোগ্রাফিক হ্যাশ জেনারেট করার বেসিক আইডিয়া হলো, আসল ডেটা এবং সিক্রেট কী ওপর হ্যাশিং পারফর্ম করা। ফাইনাল আউটপুট সিক্রেট কী ছাড়া পাঠানো হয়।
এই মডিউল ব্যবহার করতে হলে, আমাদের পাইথন কোডে hmac মডিউল ইম্পোর্ট করতে হবে।
import hmac
hmac মডিউলের কিছু মেথড এবং অ্যাট্রিবিউট নিচের মতো -
hmac.update(message) মেথড
এই মেথড দেওয়া মেসেজ দিয়ে hmac অবজেক্ট আপডেট করতে ব্যবহৃত হয়। এই ফাংশনের পুনরাবৃত্তি কল সমান একক কল.concat আর্গুমেন্টসহ।
hmac.digest() মেথড
এই মেথড আপডেট মেথড দিয়ে পাস করা ডাইজেস্টেড ডেটা ফেরত দেয়। বাইট অবজেক্টের সাইজ digest_size-এর সাথে একই। এতে ০ থেকে ২৫৫ পর্যন্ত পুরো রেঞ্জের বাইট থাকতে পারে।
hashlib.hexdigest() মেথড
এই মেথড digest মেথডের মতোই কিন্তু রেজাল্টে শুধু হেক্সাডেসিমেল ভ্যালু থাকবে। এই মেথড ইন্টারনেটের মাধ্যমে ডেটা পাঠানোর জন্য খুব সহজে ব্যবহার করা হয়।
hashlib.copy() মেথড
এই মেথড hmac অবজেক্টের একটি কপি তৈরি করতে ব্যবহৃত হয়। স্ট্রিংয়ের ডাইজেস্ট আরও দক্ষতার সাথে কম্পিউট করতে, copy() মেথড উপকারী।
উদাহরণ কোড
import hashlib
import hmac
update_bytes = b'Python123'
password = b'abcde1234'
my_hmac = hmac.new(update_bytes, password, hashlib.md5) # md5 অ্যালগরিদম ব্যবহার করে হ্যাশ তৈরি
print("The first digest: " + str(my_hmac.digest()))
print("The Canonical Name: " + my_hmac.name)
my_hmac_cpy = my_hmac.copy() # hmac অবজেক্টের একটি কপি তৈরি
print("The Copied digest: " + str(my_hmac_cpy.digest()))
আউটপুট
The first digest: b"\x1c\xe1\xfb\x9b\xd4\x8bu\xb9\xe6N6\xee\x00O'}" The Canonical Name: hmac-md5 The Copied digest: b"\x1c\xe1\xfb\x9b\xd4\x8bu\xb9\xe6N6\xee\x00O'}"