ব্যাখ্যা · সমাধানসহ উদাহরণসহ

চেকসাম কীভাবে কাজ করে

কার্ড নম্বর, আইবান, ট্যাক্স আইডি ও ক্রিপ্টো ঠিকানাগুলিতে সবসময় এক বা দুটি লুকানো অতিরিক্ত ডিজিট থাকে, যা অন্যান্য ডিজিট থেকে গণনা করা হয়। একটি অক্ষর ভুল টাইপ করলে গাণিতিক হিসাব মেলে না — এভাবেই একটি ভ্যালিডেটর অফলাইনে তাৎক্ষণিকভাবে টাইপিংয়ের ভুল শনাক্ত করতে পারে, ব্যাংক বা ব্লকচেইনের কাছে জিজ্ঞাসা না করেই।

চেকসাম কী?

একটি চেকসাম (বা চেক ডিজিট) ইচ্ছাকৃতভাবে রিডান্ডেন্সি। একটি সংখ্যা ইস্যু করার সময়, এর এক বা একাধিক ডিজিট স্বাধীনভাবে নির্বাচিত হয় না: সেগুলো অন্যান্য ডিজিট থেকে একটি নির্দিষ্ট পদ্ধতিতে গণনা করা হয়। যে কেউ এই পদ্ধতি জানলে পরে সেই ডিজিটগুলো পুনরায় গণনা করে তুলনা করতে পারে। যদি সেগুলো মিলে যায়, তবে সংখ্যাটি অভ্যন্তরীণভাবে সামঞ্জস্যপূর্ণ। যদি না মিলে, তবে কোনো অক্ষর ভুল টাইপ হয়েছে, ভুলভাবে পড়া হয়েছে অথবা ক্ষতিগ্রস্ত হয়েছে।

এটাই চেকসামের প্রতিশ্রুতি। এটা অ্যাকাউন্টটি বিদ্যমান কিনা, কে এর মালিক অথবা এতে কী আছে তা সম্পর্কে কিছু বলে না — এই বিষয়টি এই সাইটের প্রতিটি ভ্যালিডেটর বারবার উল্লেখ করে, কারণ এই দুটোকে সহজেই গুলিয়ে ফেলা যায়।

ব্যবহৃত উদাহরণ 1 — লুন, কার্ড-নম্বর অ্যালগরিদম

ভিসা, মাস্টারকার্ড ও অধিকাংশ অন্যান্য পেমেন্ট কার্ডে লুন ব্যবহৃত হয়। ক্লাসিক উদাহরণটি নিন 7992 7398 713। ডানদিকের ডিজিট থেকে শুরু করে প্রতি দ্বিতীয় ডিজিটকে দ্বিগুণ করুন; যদি দ্বিগুণ করার ফলে দুই-অঙ্কের সংখ্যা আসে, তবে সেই ডিজিটগুলোর যোগফল নিন। তারপর সবকিছুর যোগফল বের করুন।

ডিজিটডানদিক থেকে অবস্থানদ্বিগুণ হয়েছে?এটিকে গণনা করা হয়
3চেক ডিজিট3
1ডানদিক থেকে 2য়1 × 2 = 22
73য়7
84র্থ8 × 2 = 16 → 1 + 67
95ম9
36ষ্ঠ3 × 2 = 66
77ম7
28ম2 × 2 = 44
99ম9
910ম9 × 2 = 18 → 1 + 89
711তম7

ডানদিকের কলামটির যোগফল হলো 3 + 2 + 7 + 7 + 9 + 6 + 7 + 4 + 9 + 9 + 7 = 70। সত্তর দশের দ্বারা নিঃশেষে বিভাজ্য, তাই এই সংখ্যাটি বৈধ। যদি কোনো একটি অঙ্ক পরিবর্তন করা হয়, তবে মোট যোগফল আর দশের গুণিতক থাকবে না। ক্রেডিট কার্ড বৈধতা যাচাইকারী-এ এটি চেষ্টা করুন — এটি আপনার ডিভাইসে একই রকম হিসাব-নিকাশ করে।

কাজের উদাহরণ 2 — একটি ওজনযুক্ত যোগফল (ISBN-10)

অনেক জাতীয় পরিচয়পত্র নম্বরে ওজনযুক্ত যোগফল ব্যবহৃত হয়: প্রতিটি অঙ্ককে একটি নির্দিষ্ট ওজন দিয়ে গুণ করে, সবগুলো যোগ করে ভাগশেষ পরীক্ষা করা হয়। ISBN-10 এর উদাহরণটি সবচেয়ে স্পষ্ট। 0-306-40615-2 এর জন্য ওজনগুলো 10 থেকে 1 পর্যন্ত থাকে:

0×10 + 3×9 + 0×8 + 6×7 + 4×6 + 0×5 + 6×4 + 1×3 + 5×2 + 2×1 = 132

132 ঠিক 11 × 12, তাই মডুলো 11 এর ভাগশেষ শূন্য এবং ISBN টি বৈধ। ব্রাজিলের CPF, পোল্যান্ডের PESEL এবং আরও অনেক পরিচয়পত্র একই ধাঁচে নিজস্ব ওজন ও মডুলাস ব্যবহার করে — এজন্যই একটি ব্যাচ ID যাচাইকারী এক সেকেন্ডে হাজারো পরিচয়পত্র পরীক্ষা করতে পারে।

কাজের উদাহরণ 3 — IBAN এবং mod 97

আন্তর্জাতিক ব্যাংক অ্যাকাউন্ট নম্বরগুলোতে ISO 7064 mod 97-10 ব্যবহৃত হয়, যা দুটি চেক অঙ্কসহ আরও শক্তিশালী একটি পদ্ধতি। প্রচলিত উদাহরণটি হলো GB82 WEST 1234 5698 7654 32:

  1. দেশ অনুযায়ী দৈর্ঘ্য পরীক্ষা করুন: একটি ব্রিটিশ IBAN এর দৈর্ঘ্য 22 অক্ষর। ✓
  2. প্রথম চারটি অক্ষর শেষে নিয়ে যান: WEST12345698765432GB82
  3. প্রতিটি অক্ষরকে দুটি অঙ্কে রূপান্তর করুন (A = 10 … Z = 35): W→32, E→14, S→28, T→29, G→16, B→11; ফলে 3214282912345698765432161182 পাওয়া যায়।
  4. ঐ সংখ্যাটিকে 97 দিয়ে ভাগ করুন। ভাগশেষ ঠিক 1 হতে হবে — এবং তাই হয়েছে।

যেহেতু 97 একটি মৌলিক সংখ্যা এবং যেকোনো দুই-অঙ্কের বিনিময়ের চেয়ে বড়, mod 97 প্রতিটি একক-অক্ষরের ত্রুটি ও প্রতিটি অক্ষর বিনিময় শনাক্ত করে; কেবলমাত্র 97টি একটি র্যান্ডম স্ট্রিং-এর মধ্যে একটিই কাকতালীয়ভাবে উত্তীর্ণ হবে। IBAN ভ্যালিডেটর এই প্রতিটি ধাপের সাফল্য/ব্যর্থতা দেখায়।

ক্রিপ্টো ঠিকানাসমূহ: হ্যাশ থেকে তৈরি করা চেকসাম।

বিটকয়েন ও এথেরিয়াম ঠিকানাসমূহ অত্যন্ত নির্ভুল; কারণ সেখানে একটি টাইপিং ভুল স্থায়ীভাবে অর্থ কাউকে না পৌঁছানোর কারণ হয়। পুরাতন বিটকয়েন ঠিকানাসমূহ (1…, 3…) Base58Check ব্যবহার করে: ঠিকানার ডেটা SHA-256 দিয়ে দুইবার প্রক্রিয়া করা হয় এবং ফলাফলের প্রথম চারটি বাইট চেকসাম হিসেবে যোগ করা হয়। একটি ভুল অক্ষর হ্যাশকে সম্পূর্ণভাবে পরিবর্তন করে দেয়; তাই এমন ভুল ঠিকানা থেকে পালিয়ে যাওয়ার সম্ভাবনা প্রায় চার বিলিয়নে এক। নতুন bc1… ঠিকানাসমূহ Bech32 বা Bech32m ব্যবহার করে, যা একটি ত্রুটি-সংশোধনকারী কোড যা চারটি অক্ষর পর্যন্ত ত্রুটি সনাক্ত করতে সক্ষম। এথেরিয়ামের EIP-55 তার চেকসামকে বড় ও ছোট অক্ষরের প্যাটার্নে লুকিয়ে রাখে।

বিটকয়েন অ্যাড্রেস ভ্যালিডেটরইথেরিয়াম অ্যাড্রেস ভ্যালিডেটর ব্রাউজারে এই অ্যালগরিদমগুলো বাস্তবায়িত করে এবং প্রতিটি পৃষ্ঠা লোডের সময় আধিকারিক টেস্ট ভেক্টরের সাথে নিজেদের যাচাই করে।

সংক্ষিপ্তভাবে স্কিমসমূহ।

স্কিমযেগুলো ব্যবহার করেসনাক্ত করেএকটি র্যান্ডম ত্রুটি পার হওয়ার সম্ভাবনা।
লুহন (mod 10)ক্রেডিট ও ডেবিট কার্ড, IMEI, অনেক জাতীয় আইডি।প্রতিটি এক-অঙ্কের ত্রুটি ও বেশিরভাগ পাশাপাশি অক্ষর বিনিময়।প্রায় 10-এ 1।
ISO 7064 mod 97-10আইবিএএন, কিছু কর ও কোম্পানি নম্বরপ্রতিটি ত্রুটি এবং প্রতিটি অক্ষর বিনিময়প্রায় 97-এর মধ্যে 1
ওজনযুক্ত যোগফল, mod 10 অথবা 11আইএসবিএন-10, ব্রাজিলের সিপিএফ, পোল্যান্ডের পেসেল এবং আরও অনেক আইডিএকক ত্রুটি এবং বেশিরভাগ অক্ষর বিনিময়প্রায় 10-এর মধ্যে 1 অথবা 11-এর মধ্যে 1
বেস58চেক (ডাবল SHA-256, 4 বাইট)বিটকয়েনের পুরাতন ঠিকানা (1…, 3…)যেকোনো বানান ভুল, অত্যন্ত বেশি সম্ভাবনায়প্রায় 4 বিলিয়ন-এর মধ্যে 1
Bech32 / Bech32m (BCH কোড)বিটকয়েন সেগউইট ও ট্যাপরুট ঠিকানা (bc1…)নিশ্চিত: 4টি অক্ষর পর্যন্ত কোনো ত্রুটি হলে সেটি ধরা যাবে।1 বিলিয়নের মধ্যে 1-এরও কম।
EIP-55 (keccak-256 কেসিং)ইথেরিয়াম ঠিকানাবানান ভুলগুলো উপরের ও নিচের কেসের অক্ষরের প্যাটার্নের মাধ্যমে ধরা যায়।মিশ্র কেসের ইনপুটের জন্য এটি খুবই কম।

কেন একটি ভ্যালিডেটর আপনার ডিভাইসে চালানো উচিত?

উপরের সবকিছুই আপনার কাছে থাকা অঙ্কগুলোর উপর ভিত্তি করে গণিত। ভ্যালিডেটরের কোনো কার্ড নম্বর, ট্যাক্স আইডি বা ওয়ালেট ঠিকানা সার্ভারে পাঠানোর কোনো কারণ নেই — আর না পাঠানোর জন্য খুব ভালো কারণ রয়েছে। এই সাইটের প্রতিটি ভ্যালিডেটর স্থানীয়ভাবে চলে; অফলাইন টুলসের তালিকা সেগুলোকে একত্রিত করে, আর আমাদের টুল কি আপনার ডেটা আপলোড করে কিনা তা যাচাই করার গাইড যেকোনো সাইটের জন্য কুড়ি সেকেন্ডে তা নিশ্চিত করার উপায় দেখায়।

প্রশ্নোত্তর (FAQ)

একটি বৈধ চেকসাম কি মানে সংখ্যাটি বাস্তব বা সক্রিয়?

না। একটি চেকসাম শুধুমাত্র প্রমাণ করে যে অঙ্কগুলো অভ্যন্তরীণভাবে সামঞ্জস্যপূর্ণ — অর্থাৎ সংখ্যাটি অস্তিত্বশীল হতে পারে। এটি আপনাকে জানাতে পারে না যে অ্যাকাউন্টটি খোলা আছে কিনা, এর মালিক কে, অথবা এর ব্যালেন্স কত। এই সাইটের প্রতিটি ভ্যালিডেটর পৃষ্ঠায় এটি উল্লেখ করে, কারণ এই পার্থক্যটি গুরুত্বপূর্ণ।

একটি ভুল সংখ্যা এখনও কি গ্রহণযোগ্য হবে?

এটা ব্যবহৃত পদ্ধতির উপর নির্ভর করে। একটি মাত্র mod-10 চেক ডিজিট প্রায় 10টি র‍্যান্ডম ত্রুটির মধ্যে 1টিকে অনুমোদন দেয়; IBAN-এর mod 97 প্রায় 97টির মধ্যে 1টিকে অনুমোদন দেয়; 4-বাইটের Base58Check চেকসাম প্রায় 4 বিলিয়নের মধ্যে 1টিকে অনুমোদন দেয়। গুরুত্বপূর্ণ বিষয় হলো সাধারণ মানবীয় ভুলগুলো—একটি ভুল ডিজিট বা দুটি ডিজিট পরিবর্তিত হওয়া—সবগুলোই এদের দ্বারা শনাক্ত হয়।

কিছু আইডেন্টিফায়ারে কেন একেবারেই চেকসাম নেই?

পুরাতন বা সরল পদ্ধতিগুলো অফলাইন চেক করার পরিবর্তে রেজিস্ট্রিতে অনুসন্ধান করার জন্য ডিজাইন করা হয়েছিল; আবার কিছু নম্বরিং সিস্টেম এই প্রথার আবির্ভাবের আগেই চালু হয়েছিল। এগুলোর ক্ষেত্রে ভ্যালিডেটর কেবল দৈর্ঘ্য ও ফরম্যাট চেক করতে পারে।

আমার কার্ড বা আইডি নম্বর একটি ভ্যালিডেটরে পেস্ট করা কি নিরাপদ?

শুধুমাত্র যদি ভ্যালিডেশন আপনার ডিভাইসে চলে। চেকসাম হলো আপনার কাছে ইতিমধ্যে থাকা ডিজিটগুলোর উপর গাণিতিক প্রক্রিয়া; তাই ভ্যালিডেটরের পক্ষে সেগুলোকে সার্ভারে পাঠানোর কোনো বৈধ কারণ নেই। আপনি আমাদের ‘কোনো টুল আপনার ডেটা আপলোড করে কিনা তা যাচাই করার’ গাইডে বর্ণিত এয়ারপ্লেন-মোড পরীক্ষার মাধ্যমে নিশ্চিত করতে পারেন যে টুলটি স্থানীয়ভাবে চলছে।

চেকসাম, হ্যাশ ও এনক্রিপশনের মধ্যে পার্থক্য কী?

চেকসাম হলো দুর্ঘটনাজনিত টাইপো শনাক্ত করার জন্য ডিজাইন করা একটি সংক্ষিপ্ত চেক ডিজিট। ক্রিপ্টোগ্রাফিক হ্যাশ হলো একটি দীর্ঘ ফিঙ্গারপ্রিন্ট; এটা এমনভাবে ডিজাইন করা হয়েছে যাতে ইচ্ছাকৃত পরিবর্তনও শনাক্ত করা যায় এবং মূল তথ্য পুনরুদ্ধার করা যায় না। এনক্রিপশন ডেটাকে এমনভাবে রূপান্তরিত করে যে এটা কেবল একটি কী দিয়েই পড়া যায়। Base58Check তার চেকসাম তৈরি করতে হ্যাশ ব্যবহার করে; এজন্যই এটাকে দুর্ঘটনাজনিতভাবে প্রতারিত করা এতটাই কঠিন।