Ինչպես հայտնի է, գերմանական IBAN-ը բաղկացած է երկրի ծածկագրից (DE), երկնիշ ստուգիչ թվից (ըստ ISO 7064 -ի), բանկի կոդը (8 նիշ) և հաշվի համարից (ներառյալ ենթահաշիվը, 10 նիշ, բաց թողնված թվերը լրացվում են սկզբնական զրոներով) և, հետևաբար, 22 նիշ է: Չեկային նիշը հաշվարկելու համար ձևավորվում է այսպես կոչված BBAN (բանկի կոդը և հաշվի համարը), ինչպես նաև Գերմանիայի համար \(1314\) երկրի ծածկագիրը և \(00\) ) ստուգիչ նիշը:
Օրինակ, բանկի 21050170 ծածկագիրը և 12345678 հաշվի համարը վերադարձնում են BBAN 210501700012345678, ընդլայնված երկրի ծածկագրով և 00 ստուգիչ նիշով, այնուհետև ստացվում է \(x = 210501700012345678131400\) \(98 - (x \mod 97)\) (x = 2105017000123456700131, որտեղ է 8-ը: \(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^* \).
- Հետևյալ երկու 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 բանկերի ծածկագրերն իրականում գոյություն ունեն: - Մենք առաջին հերթին փորձում ենք, \( 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^* \). - Հետևյալ երկու 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: