Валидация на IBAN

Взаимопомощ, полезна информация и всичко, извън темата на останалите секции
Потребителски аватар
luciuz
Мнения: 919
Регистриран на: Пет 11 юни 2004 11:15
Автомобил:
Двигател:
Местоположение: София
Контакти:

Валидация на IBAN

Мнениеот luciuz » Пон 26 яну 2009 11:31


Здравейте,

тръгнах да пиша скриптче за проверка на IBAN и имам един въпрос относно частта за прилагане на mod-97.

В Уикипедия (http://en.wikipedia.org/wiki/IBAN) е записано:
1. Take the first 8 digits.
2. Perform a modulus calculation on those.
3. Append the next six digits to the result on step 2.
4. Repeat steps 2 and 3 until there are no more digits to append.

т.е. винаги го прилагат върху 8 цифри, докато тук http://www.morfoedro.it/doc.php?n=219&lang=en - всеки получен остатък се прилага върху следващите 8, т.е. получават се 10 цифри. Примерът е за Италия, те имат по дълъг IBAN, не знам дали е затова.

Ако някой може да ми помогне:)




Потребителски аватар
VWGT
Мнения: 6155
Регистриран на: Пет 09 дек 2005 10:09
Автомобил:
Двигател:
Местоположение: София

Re: Валидация на IBAN

Мнениеот VWGT » Пон 26 яну 2009 14:30


http://www.bnb.bg/bnb/home.nsf/vPages/P ... 4_V3.2.pdf

по-конкретно точка 6

Каква е стандартната структура на IBAN?
IBAN представлява последователност от буквени и цифрени знаци за еднозначно международно идентифициране на банкова сметка на клиент.
Всяка страна, въвела IBAN стандарта, определя специфична форма и дължина в съответствие с IBAN изискванията. В различните страни IBAN има различна дължина.
IBAN може да съдържа до 34 знака:
· Първите 2 знака винаги са код на държавата съгласно ISO стандарт и идентифицират страната, в която се поддържа сметката.
· Следващите 2 знака винаги са контролни числа, които служат за валидиране точността на въвеждане на IBAN.
· Последната част от IBAN съдържа местна информация, различна за отделните държави, която служи за идентифициране на сметката на клиента в страната, където се поддържа сметката (примерно банков идентификационен код или идентификационен клиринг номер на финансовата институция, вид и номер на клиентска сметка).

Как се калкулира контролната сума и как се валидира IBAN?
Контролната сума се соновава на стандарта ISO 7064 mod 97-10, където остатъка трябва да е 1.


Стъпките за валидация на IBAN са следните:
1. Проверява се дължината на IBAN за съответната страна. Ако дължината не отговаря - IBAN е невалиден.
2. Преместват се началните 4 символа в края.
3. Всички букви се заменят с числа, независимо от това, че дължината на номера ще се промени. Замяната става като следва: A се заменя с 10, B с 11 и т.н. до Z което се заменя с 35.
4. Получения стринг се третира като цяло число е се прилага mod-97 (делене на 97).
Ако остатъка от деленето е 1, IBAN номера е валиден.

Калкулирането на контролната сума става по следния начин:
1. Проверява се дължината на IBAN за съответната страна. Ако дължината не отговаря - IBAN е невалиден.
2. На мястото на контролната сума се поставя 00 (например BG00 за България).
3. Преместват се началните 4 символа в края.
4. Всички букви се заменят с числа, независимо от това, че дължината на номера ще се промени. Замяната става като следва: A се заменя с 10, B с 11 и т.н. до Z което се заменя с 35.
5. Получения стринг се третира като цяло число е се прилага mod-97 (делене на 97).
6. От 98 се изважда остатъка от горното делене. Ако резултата е една цифра се добавя водеща нула.


Потребителски аватар
luciuz
Мнения: 919
Регистриран на: Пет 11 юни 2004 11:15
Автомобил:
Двигател:
Местоположение: София
Контакти:

Re: Валидация на IBAN

Мнениеот luciuz » Пон 26 яну 2009 15:11


VWGT написа: 5. Получения стринг се третира като цяло число е се прилага mod-97 (делене на 97).


това всичкото съм го направил, интересува ме самото прилагане (точка 5 от поста ти) - след първата група от 8 цифри, всяка следваща е остатък + 6 или остатък + 8


Потребителски аватар
VWGT
Мнения: 6155
Регистриран на: Пет 09 дек 2005 10:09
Автомобил:
Двигател:
Местоположение: София

Re: Валидация на IBAN

Мнениеот VWGT » Пон 26 яну 2009 15:38


неразбрах точно какъв ти е коментара (не съм програмист бтв 8) ), тази 5-та стъпка е от точка 6.2 на пдф файла, която се занимава с калкулирането на контролната сума, а не с валидацията, валидацията е описана в т. 6.1 от пдф файла (ако дължината е ок за БГ стандарта и деленето на 97 дава остатък 1 всичко е ок).

По-добре гледай пдф-а, защото това, което съм го пейстнал е нещо като превод на файла, който превод бях намерил отдавна преди да намеря самия пдф. В пдф-а има даден конкретен пример.


Потребителски аватар
luciuz
Мнения: 919
Регистриран на: Пет 11 юни 2004 11:15
Автомобил:
Двигател:
Местоположение: София
Контакти:

Re: Валидация на IBAN

Мнениеот luciuz » Пон 26 яну 2009 17:49


VWGT написа:По-добре гледай пдф-а, защото това, което съм го пейстнал е нещо като превод на файла, който превод бях намерил отдавна преди да намеря самия пдф. В пдф-а има даден конкретен пример.


примерът не върши работа, защото не показва как точно се дели стринга при прилагане на mod-97

Реших проблема като взех няколко истински IBAN-а и си играх докато излязат. Решението е мод97 на 8+(2 цифри остатък +8)+(2 цифри остатък +8)+(2 цифри остатък +8) .... = 1

:lock:



Върни се в “ОФФ-Топик - други”

Кой е на линия

Потребители, разглеждащи този форум: Google [Bot] и 236 госта