Siç dihet, IBAN-i gjerman përbëhet nga kodi i shtetit (DE), një shifër kontrolli dyshifrore (sipas ISO 7064 ), kodi bankar (8-shifror) dhe numri i llogarisë (përfshirë numrin e nënllogarisë, Shifrat 10-shifrore, që mungojnë, plotësohen me zero kryesore) dhe për këtë arsye janë 22-shifrore. Për të llogaritur shifrën e kontrollit, formohet i ashtuquajturi BBAN (kodi bankar dhe numri i llogarisë) si dhe kodi numerik i vendit \(1314\) për Gjermaninë dhe shifra e kontrollit \(00\) ).
Për shembull, kodi bankar 21050170 dhe numri i llogarisë 12345678 kthejnë BBAN 210501700012345678, të zgjeruar me kodin e shtetit dhe shifrën e kontrollit 00, më pas rezulton në \(x = 210501700012345678131400\) , ku është 8 (8 \(98 - (x \mod 97)\) 8) \(98 - (x \mod 97)\) . Nuk është rastësi që kjo pjesëtohet me \(97\) . Si numri kryesor dyshifror më i madh i mundshëm, ai njeh hyrjet e pasakta si shifrat e transpozuara me probabilitetin më të madh të mundshëm. Tani tregojmë deklaratat e mëposhtme:
- Ndryshimi i një shifre të një IBAN të vlefshëm do të rezultojë në një IBAN të pavlefshëm.
- Ndryshimi i dy shifrave të ndryshme të një IBAN të vlefshëm mund të rezultojë në një IBAN të vlefshëm.
- Nëse dy pozicione të ndryshme të një IBAN të vlefshëm ndërrohen, krijohet një IBAN i pavlefshëm.
- Nëse ndërroni dy pozicione të ndryshme të një IBAN të vlefshëm dy herë, mund të rezultojë një IBAN i vlefshëm.
Le $$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}$$ një IBAN i vlefshëm.
Pastaj $$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-in e lidhur (shtrirë me kodin e shtetit të koduar me numër DE dhe shifrën e kontrollit \(00\) ).
- Ndrysho tani \(N_k\), është \(A_B^* = A_B + l \cdot 10^{24-k}\) me \(1 \leq k \leq 18\) dhe \((-1) \cdot N_k \leq l \leq 9-N_k \wedge l \neq 0\). Me \( P = 98 - (A_B \mod 97) \) por eshte \(P^* = 98 - \left((A_B + l \cdot 10^{24-k}) \mod 97\right) \). Në përgjithësi vlen për \( a \equiv a' \mod m, b \equiv b' \mod m \): \(a + b \equiv a' + b' \mod m\). Me \(A_B \equiv R_1 \mod 97\) dhe \(l \cdot 10^{24-k} \equiv R_2 \mod 97\) është \( (A_B + l \cdot 10^{24-k}) \equiv R_1 + R_2 \mod 97 \). Por tani është \( 0 < R_2 < 97 \) dhe kështu \( P^* = 98 - (R_1+R_2) \neq 98 - R_1 = P \) dhe për këtë arsye \( P_1 \neq P_1^* \vee P_2 \neq P_2^* \). Kjo lë vetëm një ndryshim të mundshëm të një shifre nga \( P \) te \( P^* \neq P \). Këtu por \( N_k \) mbetet e pandryshuar, krijohet shuma e kontrollit \( P \neq P^* \).
- Dy IBAN-et e mëposhtme janë të vlefshme:
$$\begin{align} A_1 = DE89207300\boldsymbol{\color{red}01}0012345674 \\ A_2 = DE89207300\boldsymbol{\color{red}98}0012345674 \end{align}$$ , që kemi rritur dy shifra ngjitur në \(A_1\) me \(97\) . Për më tepër, IBAN nuk është vetëm zyrtarisht i vlefshëm, por kodet bankare bazë 20730001 dhe 20730098 ekzistojnë në të vërtetë. - Ne përpiqemi së pari, \( N_{k_1} \) dhe \( N_{k_2} \) për të ndërruar. E para është \( P = 98 - (A_B \mod 97) \) si \(P^* = 98 - \left((A_B + l \cdot 10^{24-k_1} - l \cdot 10^{24-k_2}) \mod 97\right) \) me \(l = N_{k_2} - N_{k_1}\) dhe \(1 \leq k_1, k_2 \leq 18\). Tani është për shkak të
$$\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}\). Kështu është \( P \neq P^* \). Pra, mbetet për t'u kontrolluar \(P_n\) dhe \(N_k\) me \( 1 \leq n \leq 2 \) dhe \( 1 \leq k \leq 18 \) tregton. Ndoshta \(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)\). Që ne \(A_B\) përreth \(l \cdot 10^{24-k}\) ne duhet të ndryshojmë \(P_1\) ose \(P_2\) përreth \(-l\), kështu që \(P\) përreth \(-10^m l\) me \(m \in \{0,1\}\) ndryshim: Atëherë është \(P^* = 98 - R_2\) por gjithashtu \(P^* = P - 10^m l = 98 - R_1 - 10^m l\), rrjedhimisht \(R_2 = R_1 + 10^m l,\) dhe kështu
$$((A_B \mod 97) + (l \cdot 10^{24-k} \mod 97)) \mod 97 = (A_B \mod 97) + 10^m l$$ Megjithatë, ky ekuacion nuk përmbushet kurrë, siç tregon skenari i mëposhtëm:See the Pen IBAN FORMULA CHECK by David Vielhuber (@vielhuber) on CodePen.
Kjo lë vetëm një shkëmbim të mundshëm të \(P_1\) dhe \(P_2\). Këtu por \( N_k \) mbetet e pandryshuar, krijohet shuma e kontrollit \( P \neq P^* \). - Dy IBAN-et e mëposhtme janë të vlefshme:
$$\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*}$$ Edhe këtu, BIC 20220800 ekziston në të vërtetë.