ដូចដែលត្រូវបានគេស្គាល់យ៉ាងច្បាស់ IBAN របស់អាឡឺម៉ង់មានលេខកូដប្រទេស (DE) លេខមូលប្បទានប័ត្រពីរខ្ទង់ (យោងទៅតាម ISO 7064 ) លេខកូដធនាគារ (8 ខ្ទង់) និងលេខគណនី (រាប់បញ្ចូលទាំងលេខគណនីរង។ លេខ 10 ខ្ទង់ដែលបាត់ត្រូវបានបំពេញដោយលេខសូន្យនាំមុខ) ហើយដូច្នេះគឺ 22 ខ្ទង់។ ដើម្បីគណនាខ្ទង់មូលប្បទានប័ត្រ អ្វីដែលគេហៅថា BBAN (លេខកូដធនាគារ និងលេខគណនី) ក៏ដូចជាលេខកូដប្រទេសជាលេខ \(1314\) សម្រាប់ប្រទេសអាល្លឺម៉ង់ និងលេខមូលប្បទានប័ត្រ \(00\) ) ត្រូវបានបង្កើតឡើង។
ឧទាហរណ៍ លេខកូដធនាគារ 21050170 និងលេខគណនី 12345678 ត្រឡប់ BBAN 210501700012345678 ពង្រីកដោយលេខកូដប្រទេស និងលេខមូលប្បទានប័ត្រលេខ 00 បន្ទាប់មកលទ្ធផលជា \(x = 210501700012345678131400\) (ឥឡូវនេះ លេខ 9 \(98 - (x \mod 97)\) ។ វាមិនមែនជារឿងចៃដន្យទេដែលវាត្រូវបានបែងចែកដោយ \(97\) ។ ក្នុងនាមជាលេខគោលពីរខ្ទង់ដ៏ធំបំផុតដែលអាចធ្វើបាន វាទទួលស្គាល់ធាតុមិនត្រឹមត្រូវដូចជាលេខដែលបានចម្លងជាមួយនឹងប្រូបាបច្រើនបំផុត។ ឥឡូវនេះ យើងបង្ហាញសេចក្ដីថ្លែងការណ៍ដូចខាងក្រោម:
- ការផ្លាស់ប្តូរមួយខ្ទង់នៃ IBAN ត្រឹមត្រូវនឹងបណ្តាលឱ្យ IBAN មិនត្រឹមត្រូវ។
- ការផ្លាស់ប្តូរលេខពីរផ្សេងគ្នានៃ IBAN ត្រឹមត្រូវអាចបណ្តាលឱ្យ IBAN ត្រឹមត្រូវ។
- ប្រសិនបើទីតាំងពីរផ្សេងគ្នានៃ IBAN ត្រឹមត្រូវត្រូវបានផ្លាស់ប្តូរ IBAN មិនត្រឹមត្រូវត្រូវបានបង្កើតឡើង។
- ប្រសិនបើអ្នកប្តូរមុខតំណែងពីរផ្សេងគ្នានៃ 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\) ) ។
- ផ្លាស់ប្តូរឥឡូវនេះ \(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^* \).
- IBANs ពីរខាងក្រោមមានសុពលភាព៖
$$\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 ពិតជាមាន។ - យើងព្យាយាមដំបូង, \( 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^* \). - IBANs ពីរខាងក្រោមមានសុពលភាព៖
$$\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 ពិតជាមាន។