মডুলার অ্যারিথমেটিকের বিচরণ কি কেবল সংখ্যাতত্ত্বের মধ্যেই? (পর্ব-১)
গণিত ইশকুলে বছরজুড়ে গণিত শিখি
মডুলার অ্যারিথমেটিক সম্পর্কে আমরা সবাই কমবেশি জানি। অনেকেই একে ভাগশেষ প্রকাশের একটি পদ্ধতি বলতে পারে। এটি সম্পূর্ণ ভুল নয়; এর যদি সংজ্ঞা দিতেই হয়, তাহলে বলা যায়, পূর্ণসংখ্যার যে অ্যারিথমেটিক ব্যবস্থায় সংখ্যাসমূহ একটি নির্দিষ্ট মানে পৌঁছালে আবার শূন্য থেকে আরম্ভ হয়, তা–ই হলো মডুলার অ্যারিথমেটিক এবং ওই মান হলো মডুলাস । দৃষ্টান্তস্বরূপ, যদি a = bk + r হয়, তখন আমরা বলতে পারি যে a ≡ r (mod b); a, r, b ∈ Z এবং b ≠ 0।
প্রাথমিক আলোচনা শেষ! এবার মূল কথায় আসি। মডুলার অ্যারিথমেটিক দিয়ে যেমন বিভিন্ন গাণিতিক সমস্যার সমাধান করা যায়, তেমনি বাস্তব ক্ষেত্রেও এর ব্যাপক ব্যবহার আছে। সেগুলোই আজকের আলোচনার প্রতিপাদ্য বিষয়।
ক্রিপ্টোগ্রাফি ও নেটওয়ার্ক সিকিউরিটি
ক্রিপ্টোগ্রাফি কম্পিউটার সায়েন্সের এমন একটি শাখা, যেখানে সহজ টেক্সটকে দুর্বোধ্য ও জটিল টেক্সটে পরিণত করা হয়। মূলত নেটওয়ার্ক সিকিউরিটির জন্য এমন ডিজিটাল এনক্রিপশনের সূচনা, যাতে নির্দিষ্ট ব্যক্তি ছাড়া অন্য কেউ কোনো ডেটা রিসিভ করতে না পারে। ক্রিপ্টোগ্রাফি ও নেটওয়ার্ক সিকিউরিটির বহু অপারেশনে মডুলার অ্যারিথমেটিক ব্যবহার করা হয়। যদি একটি সহজ দৃষ্টান্ত দিতে হয়, তাহলে সিজার সাইফার (Caesar Cipher) আর শিফট সাইফার মেথডের কথা বলা যেতে পারে। আজকের আলোচনা কেবল শিফট সাইফার মেথডেই সীমাবদ্ধ রাখি।
এর জন্য প্রথমেই ইংরেজি 26 টি বর্ণকে 0 থেকে 25 পর্যন্ত নম্বরিং করতে হবে। যদি বলা হয় ‘AMAZING’, তাহলে এটি ক্রিপ্টোগ্রাফে রূপান্তরিত হয়ে হবে 0 12 0 25 8 13 6। এবার সংখ্যাগুলোর সঙ্গে 7 যোগ করে এদের স্থান 7 ঘর ডানে শিফট করতে হবে। যোগ করার পর 25–এর বেশি এলে 26 mod নিতে হবে। ফলে এটি হবে 7 19 7 6 15 20 13। এটি এনক্রিপট হলে এমনটি দেখাবে ‘HTHGPUN’, যেটি প্রকৃতপক্ষে নিরর্থক। এবার রিসিভার এটি গ্রহণ করলে আবার ডিক্রিপশনের মাধ্যমে মূল টেক্সট পাওয়া যাবে।
এই টেক্সট ডিক্রিপশনের কাজটি পাঠকদের জন্য রইল। (Hint: টেক্সটটির অক্ষরগুলোর জন্য নাম্বারিং করে 7 বিয়োগ করি এবং কোনোটি নেগেটিভ এলে 26 mod নিতে হবে। অতঃপর সংখ্যাগুলো অক্ষর অনুসারে বিন্যস্ত করি !!)। উল্লেখ্য, যেকোনো সংখ্যক স্থান শিফট করা যায়, যাকে বলা হয় Key Input।
ISBN (International Standard Book Number), UPC (Universal Product Code), এর চেক ডিজিট নির্ণয় ও ভ্যালিডেশন এবং Credit Card Number ভ্যালিডেশন: ISBN-এ বর্তমানে 13টি ডিজিট থাকে এবং শেষ ডিজিটকে বলে চেক ডিজিট। ডিজিটগুলো d1, d2, d3, ... ... ... , d13 হলে d13 কে চেক ডিজিট বলে এবং এটি বের করার জন্য নিচের সমীকরণ ব্যবহার করা হয়।
d13 = 10 - (d1 + 3d2 + d3 + 3d4 + d5 + 3d6 + d7 + 3d8 + d9 + 3d10 + d11 + 3d12) mod 10
উল্লেখ্য যে 2007–এর আগে ISBN-10 ডিজিটের ছিল। সেগুলোর ভ্যালিডেশনের জন্য নিচের শর্ত ব্যবহার করা হতো।
0 = (10d1 + 9d2 + 8d3 + 7d4 + 6d5 + 5d6 + 4d7 + 3d8 + 2d9 + d10) mod 11
UPC মূলত 12 ডিজিটের হয়। এটি one dimensional barcode যেখানে চেক ডিজিট হলো d12। এ ক্ষেত্রে চেক ডিজিট বের করার জন্য নিচের সমীকরণ ব্যবহার করা হয়।
d12 = 10 - (3d1 + d2 + 3d3 + d4 + 3d5 + d6 + 3d7 + d8 + 3d9 + d10 + 3d11) mod 10
ক্রেডিট কার্ডের নম্বর ভ্যালিডেশন
এবার আসা যাক Credit Card Number ভ্যালিডেশনের ক্ষেত্রে। Credit Card Number 13-16 ডিজিটের হয়। এটি ভ্যালিডেশনের জন্য Luhn (IBM Researcher Hans Peter Luhn) Algorithm ব্যবহার করা হয়। ধরি, 16 ডিজিটের Credit Card Number–এর ক্ষেত্রে ডান দিক থেকে প্রতি দ্বিতীয় ডিজিটকে দ্বিগুণ করতে হবে এবং প্রাপ্ত নতুন ডিজিটগুলো যোগ করে mod 10 নিলে যদি ফলাফল 0 আসে, তাহলে উক্ত Credit Card Number সঠিক।
যেমন, 5268 – 7912 – 3456 - 7890 এর ক্ষেত্রে নতুন নম্বরটি হবে 102128 – 14922 – 64106 - 148180। উল্লেখ্য যে দ্বিগুণ করার পর 2 অঙ্কের সংখ্যা এলে তাদের আলাদা ডিজিট বিবেচনা করতে হবে। এ ক্ষেত্রে যোগফল হবে 1 + 0 + 2 + 1 + 2 + 8 + ... ... ... + 4 + 8 + 1 + 8 + 0 = 71। (71 mod 10) কখনোই 0 এর কংগ্রুয়েন্ট নয়। তাই এই Credit Card Number ভ্যালিড নয়।