![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 311 Pomógł: 13 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie. Przeryłem wszystkie internety w poszukiwaniu generatora sumy kontrolnej dla numeru rachunku bankowego. Wszystkie które znalazłem potrafią tylko weryfikować jej poprawność, tzn na wejściu dostają 26 liczb, przestawiają je, wymnażają razy wagi i sprawdzają czy modulo 97 wyniku tego mnożenia jest równe jeden.
Mnie natomiast chodzi o coś, co na wejściu dostaje 24 znaki a wypluwa dwa pierwsze czyli sumę kontrolną. Googlując odwrotność modulo trafiłem tylko na coś co się zwie rozszerzony algorytm Euklidesa ale niestety przerasta mnie to matematycznie. Jedyne na co wpadłem to pętla inkrementująca pierwsze dwa znaki aż do momentu, aż funkcja weyfikująca numer IBAN nie zwróci true. Wiem, że jest to fatalne pod względem wykorzystania zasobów tym bardziej, jeśli będę chciał wygenerować sumy dla kilkudziesięciu rachunków. Czy ktoś z Was posiada gotowca i zechciałby się nim podzielić? Na prawdę nikt nic? -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 531 Pomógł: 55 Dołączył: 3.01.2016 Skąd: Łowicz Ostrzeżenie: (0%) ![]() ![]() |
Kod public static string WyliczajNRB(string bban) {
if (string.IsNullOrEmpty(bban)) throw new ArgumentException("Musisz podać numeru rachunku."); bban = bban.Replace(" ", null); if (!Regex.IsMatch(bban, @"^\d{24}$")) throw new ArgumentException("Podany numer rachunku jest nieprawidłowy!"); string nr2 = bban + "252100"; // A=10, B=11, ..., L=21, ..., P=25 oraz 2 zera int modulo = 0; foreach (char znak in nr2) modulo = (10 * modulo + int.Parse(znak.ToString())) % 97; modulo = 98 - modulo; return string.Format("{0:00} {1}", modulo, string.Join(" ", Regex.Split(bban, "(....)(....)(....)(....)(....)(....)")).Trim()); } -------------------- Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.05.2025 - 09:54 |