IBAN এর দৃঢ়তা সম্পর্কে

যেমনটি সুপরিচিত, জার্মান IBAN-এ কান্ট্রি কোড (DE), একটি দুই-সংখ্যার চেক ডিজিট ( ISO 7064 অনুযায়ী), ব্যাঙ্ক কোড (8-সংখ্যা) এবং অ্যাকাউন্ট নম্বর (সাব-অ্যাকাউন্ট নম্বর, 10 সহ) রয়েছে। -অঙ্ক, অনুপস্থিত সংখ্যাগুলি অগ্রণী শূন্য দিয়ে পূর্ণ) এবং তাই 22-অঙ্ক। চেক ডিজিট গণনা করার জন্য, তথাকথিত BBAN (ব্যাঙ্ক কোড এবং অ্যাকাউন্ট নম্বর) পাশাপাশি জার্মানির সংখ্যাসূচক দেশের কোড \(1314\) এবং চেক ডিজিট \(00\) ) গঠিত হয়।


উদাহরণ স্বরূপ, ব্যাঙ্ক কোড 21050170 এবং অ্যাকাউন্ট নম্বর 12345678 BBAN 210501700012345678 ফেরত দেয়, দেশের কোড এবং চেক ডিজিট 00 দিয়ে প্রসারিত করে তারপরে ফলাফল হয় \(x = 210501700012345678131400\) (এখন চেকটি \(এখন \(98 - (x \mod 97)\) \90\94 ডিজিট) \(98 - (x \mod 97)\) । এটা কোন কাকতালীয় ঘটনা নয় যে এটিকে \(97\) দ্বারা ভাগ করা হয়েছে। বৃহত্তম সম্ভাব্য দুই-অঙ্কের মৌলিক সংখ্যা হিসাবে, এটি সম্ভাব্য সর্বাধিক সম্ভাব্যতার সাথে ট্রান্সপোজড ডিজিটের মতো ভুল এন্ট্রিগুলিকে স্বীকৃতি দেয়। আমরা এখন নিম্নলিখিত বিবৃতি দেখান:

  1. একটি বৈধ IBAN-এর একটি সংখ্যা পরিবর্তন করলে একটি অবৈধ IBAN হবে৷
  2. একটি বৈধ IBAN এর দুটি ভিন্ন সংখ্যা পরিবর্তন করলে একটি বৈধ IBAN হতে পারে।
  3. যদি একটি বৈধ IBAN এর দুটি ভিন্ন অবস্থান বিনিময় করা হয়, তাহলে একটি অবৈধ IBAN তৈরি হয়।
  4. আপনি যদি একটি বৈধ IBAN এর দুটি ভিন্ন অবস্থান দুবার অদলবদল করেন, তাহলে একটি বৈধ IBAN ফলাফল হতে পারে।

যাক $$A = DE P_1 P_2 N_1 N_2 N_3 N_4 N_5 N_6 N_7 N_8 N_9 N_{10} N_{11} N_{12} N_{13} N_{14} N_{15} N_{16} N_{17} N_{18}$$ একটি বৈধ IBAN।

তারপর $$A_B = N_1 N_2 N_3 N_4 N_5 N_6 N_7 N_8 N_9 N_{10} N_{11} N_{12} N_{13} N_{14} N_{15} N_{16} N_{17} N_{18} 131400$$ সংশ্লিষ্ট BBAN (সংখ্যা-কোডেড দেশের কোড DE এবং চেক ডিজিট \(00\) সহ প্রসারিত)।

  1. এখনই পরিবর্তন করুন \(N_k\), হয় \(A_B^* = A_B + l \cdot 10^{24-k}\) সঙ্গে \(1 \leq k \leq 18\) এবং \((-1) \cdot N_k \leq l \leq 9-N_k \wedge l \neq 0\). সঙ্গে \( P = 98 - (A_B \mod 97) \) কিন্তু হয় \(P^* = 98 - \left((A_B + l \cdot 10^{24-k}) \mod 97\right) \). সাধারণত প্রযোজ্য \( a \equiv a' \mod m, b \equiv b' \mod m \): \(a + b \equiv a' + b' \mod m\). সঙ্গে \(A_B \equiv R_1 \mod 97\) এবং \(l \cdot 10^{24-k} \equiv R_2 \mod 97\) হয় \( (A_B + l \cdot 10^{24-k}) \equiv R_1 + R_2 \mod 97 \). কিন্তু এখন এটা \( 0 < R_2 < 97 \) এবং এগুলো \( P^* = 98 - (R_1+R_2) \neq 98 - R_1 = P \) এবং সেইজন্য \( P_1 \neq P_1^* \vee P_2 \neq P_2^* \). এটি থেকে একটি সংখ্যার শুধুমাত্র একটি সম্ভাব্য পরিবর্তন ছেড়ে যায় \( P \) প্রতি \( P^* \neq P \). এখানে কিন্তু \( N_k \) অপরিবর্তিত থাকে, চেকসাম তৈরি হয় \( P \neq P^* \).
  2. নিম্নলিখিত দুটি IBAN বৈধ:
    $$\begin{align} A_1 = DE89207300\boldsymbol{\color{red}01}0012345674 \\ A_2 = DE89207300\boldsymbol{\color{red}98}0012345674 \end{align}$$ লাভ করুন , যে আমরা \(A_1\) এ দুটি সন্নিহিত সংখ্যা \(97\) দ্বারা বৃদ্ধি করেছি। উপরন্তু, IBAN শুধুমাত্র আনুষ্ঠানিকভাবে বৈধ নয়, অন্তর্নিহিত ব্যাঙ্ক কোড 20730001 এবং 20730098 আসলে বিদ্যমান।
  3. আমরা প্রথমে চেষ্টা করি, \( N_{k_1} \) এবং \( N_{k_2} \) বিনিময় করা. প্রথম হল \( P = 98 - (A_B \mod 97) \) যেমন \(P^* = 98 - \left((A_B + l \cdot 10^{24-k_1} - l \cdot 10^{24-k_2}) \mod 97\right) \) সঙ্গে \(l = N_{k_2} - N_{k_1}\) এবং \(1 \leq k_1, k_2 \leq 18\). এখন কারণ

    $$\begin{array} {|c|c|} \hline k & R = 10^{24-k} \mod 97 \\ \hline 1 & 56 \\ \hline 2 & 25 \\ \hline 3 & 51 \\ \hline 4 & 73 \\ \hline 5 & 17 \\ \hline 6 & 89 \\ \hline 7 & 38 \\ \hline 8 & 62 \\ \hline 9 & 45 \\ \hline 10 & 53 \\ \hline 11 & 15 \\ \hline 12 & 50 \\ \hline 13 & 5 \\ \hline 14 & 49 \\ \hline 15 & 34 \\ \hline 16 & 81 \\ \hline 17 & 76 \\ \hline 18 & 27 \\ \hline \end{array}$$
    \( \forall k_1 \neq k_2 \in \left\{ 1, \ldots, 18 \right\} : R_{k_1} \neq R_{k_2}\). তাই হয় \( P \neq P^* \). তাই এটা চেক করা অবশেষ \(P_n\) এবং \(N_k\) সঙ্গে \( 1 \leq n \leq 2 \) এবং \( 1 \leq k \leq 18 \) ব্যবসা হতে পারে \(P = 98 - (A_B \mod 97)), (R_1 = (A_B \mod 97)\), \(P^* = 98 - (A_B + (l \cdot 10^{24-k}) \mod 97)\), \(R_2 = (A_B + (l \cdot 10^{24-k}) \mod 97)\). যেহেতু আমরা \(A_B\) কাছাকাছি \(l \cdot 10^{24-k}\) আমাদের পরিবর্তন করতে হবে \(P_1\) বা \(P_2\) কাছাকাছি \(-l\), তাই \(P\) কাছাকাছি \(-10^m l\) সঙ্গে \(m \in \{0,1\}\) পরিবর্তন: তারপর হয় \(P^* = 98 - R_2\) কিন্তু এছাড়াও \(P^* = P - 10^m l = 98 - R_1 - 10^m l\), অতএব \(R_2 = R_1 + 10^m l,\) এবং এগুলো
    $$((A_B \mod 97) + (l \cdot 10^{24-k} \mod 97)) \mod 97 = (A_B \mod 97) + 10^m l$$ যাইহোক, এই সমীকরণটি কখনই পূরণ হয় না, যেমনটি নিম্নলিখিত স্ক্রিপ্টটি দেখায়:

    See the Pen IBAN FORMULA CHECK by David Vielhuber (@vielhuber) on CodePen.

    এই শুধুমাত্র একটি সম্ভাব্য বিনিময় ছেড়ে \(P_1\) এবং \(P_2\). এখানে কিন্তু \( N_k \) অপরিবর্তিত থাকে, চেকসাম তৈরি হয় \( P \neq P^* \).
  4. নিম্নলিখিত দুটি IBAN বৈধ:
    $$\begin{align*}A_1 = DE\boldsymbol{\color{red}8}\boldsymbol{\color{green}3}20220800\boldsymbol{\color{red}1}000000\boldsymbol{\color{green}0}00 \\ A_2 = DE\boldsymbol{\color{red}1}\boldsymbol{\color{green}0}20220800\boldsymbol{\color{red}8}000000\boldsymbol{\color{green}3}00\end{align*}$$ এখানেও, BIC 20220800 আসলে বিদ্যমান।
পেছনে