পাইথনে ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন ব্যবহার করে বার্তা প্রমাণীকরণ HMAC প্রক্রিয়ার মাধ্যমে অর্জন করা যেতে পারে। আমরা HMAC ব্যবহার করতে পারি একাধিক পুনরাবৃত্তিযোগ্য হ্যাশ ফাংশন যেমন MD5, SHA-1 একটি গোপন শেয়ার্ড কী এর সাথে একত্রে।
মূল ধারণা হল আমাদের ডেটা সুরক্ষিত করা, একটি শেয়ার্ড সিক্রেট কী সহ প্রকৃত ডেটার একটি ক্রিপ্টোগ্রাফিক হ্যাশ তৈরি করে৷ চূড়ান্ত ফলাফলটি গোপন কী ছাড়াই পাঠানো হয় তবে ফলস্বরূপ হ্যাশটি প্রেরিত বা সংরক্ষিত বার্তা পরীক্ষা করতে ব্যবহার করা যেতে পারে৷
সিনট্যাক্স
hmac.new(key, msg = None, digestmod = None)
একটি নতুন hmac অবজেক্ট তৈরি করে।
যেখানে -
-
কী – এখানে শেয়ার করা গোপন কী।
-
বার্তা - এখানে হ্যাশ করার বার্তাটি এখানে হ্যাশ করার বার্তা
-
ডাইজেস্টমোড – HMAC অবজেক্ট ব্যবহার করার জন্য ডাইজেস্ট নাম বা মডিউল
HMAC মডিউল-
এর পদ্ধতি এবং বৈশিষ্ট্য-
hmac.update(বার্তা)
প্রদত্ত বার্তা ব্যবহার করে hmac অবজেক্ট আপডেট করতে ব্যবহৃত হয়। আপনি একাধিকবার এই পদ্ধতিতে কল করলে বার্তা সংযুক্ত করা হবে৷
-
hmac.digest()
এখন পর্যন্ত আপডেট() পদ্ধতিতে পাস করা বাইটের ডাইজেস্ট ফেরত দিন।
-
hashlib.hexdigest()
ডাইজেস্ট ব্যতীত ডাইজেস্ট() এর মত শুধুমাত্র হেক্সাডেসিমেল ডিজিট ধারণকারী দৈর্ঘ্যের দ্বিগুণ স্ট্রিং হিসাবে ফেরত দেওয়া হয়। এটি ইমেল বা অন্যান্য অ-বাইনারী পরিবেশে নিরাপদে মান বিনিময় করতে ব্যবহার করা যেতে পারে।
-
haslib.copy()
hmac অবজেক্টের একটি অনুলিপি ("ক্লোন") ফেরত দিন।
উদাহরণ1
ডিফল্ট MD5 হ্যাশ অ্যালগরিদম ব্যবহার করে একটি হ্যাশ তৈরি করা।
#Import libraries import hashlib import hmac #data update_bytes = b'Lorem ipsum dolor sit amet, consectetur adipiscing elit. \ Suspendisse tristique condimentum viverra. Nulla accumsan \ orci risus, non congue lacus feugiat id.' #secret key password = b'402xy5#' #Generate cryptographic hash using md5 my_hmac = hmac.new(update_bytes, password, hashlib.md5) print("The first digest: " + str(my_hmac.digest())) print("The Canonical Name: " + my_hmac.name) print("Block size: " + str (my_hmac.block_size) + "bytes") print("Digest size: " + str(my_hmac.digest_size) + "bytes") #Create a copy of the hmac object my_hmac_cpy = my_hmac.copy() print("The Copied digest: " + str(my_hmac_cpy.digest()))
আউটপুট
The first digest: b'H\xcc.nf\xdd\x8bC\x8di\x0cC\xb8\xe9l\xa8' The Canonical Name: hmac-md5 Block size: 64bytes Digest size: 16bytes The Copied digest: b'H\xcc.nf\xdd\x8bC\x8di\x0cC\xb8\xe9l\xa8'
যেহেতু SHA1 কে MD5 অ্যালগরিদমের চেয়ে বেশি নিরাপদ বলে মনে করা হয় এবং আপনি যদি SHA1 অ্যালগরিদম ব্যবহার করে উপরের প্রোগ্রামটি চালানোর কথা ভাবছেন। শুধু এই লাইনে অ্যালগরিদম নাম পরিবর্তন করুন,
my_hmac =hmac.new(update_bytes, password,hashlib.sha1)
এবং আমাদের ফলাফল এমন কিছু হবে:
প্রথম ডাইজেস্ট:b'\xc3T\xe7[\xc8\xa3O/$\xbd`A\xad\x07d\xe8\xae\xa2!\xb4'
The Canonical Name: hmac-sha1 Block size: 64bytes Digest size: 20bytes The Copied digest: b'\xc3T\xe7[\xc8\xa3O/$\xbd`A\xad\x07d\xe8\xae\xa2!\xb4'
অ্যাপ্লিকেশন
HMAC প্রমাণীকরণ পদ্ধতি যে কোনও জায়গায় ব্যবহার করা যেতে পারে যেখানে পাবলিক নেটওয়ার্ক পরিষেবাগুলির মতো নিরাপত্তা গুরুত্বপূর্ণ। উদাহরণস্বরূপ, পাবলিক নেটওয়ার্কে আমরা একটি পাইপ বা সকেটের মাধ্যমে একটি গুরুত্বপূর্ণ ফাইল/ডেটা পাঠাচ্ছি, সেই ফাইল/ডেটা সাইন করা উচিত এবং তারপর ডেটা ব্যবহার করার আগে স্বাক্ষরটি পরীক্ষা করা উচিত।