Vérifier la validité d’un IBAN en C#

La vérification d’un numéro de compte au format IBAN est une opération somme toute assez simple.
Certains proposent sur le net des vérifications sur le code ISO du pays, basées sur des listes de ces codes ISO, etc.

Vous en trouverez un bel exemple ici :Iban Validity
ou encore ici : Iban Validity 2

Pour ma part, j’ai préféré faire simple : je base tout sur le modulo 97… et c’est tout 🙂
En effet, je préfère éviter les tables à mettre à jour et je n’ai pas l’impression que ces contrôles vers des codes pays apportent une véritable plus-value dans ce cas-ci.

Voici donc ce code minimaliste :

public bool checkIban(string iban)
{
string ibanTemp;
int longueurString;
int compteur;
char ch;;

//Nettoyage de chaine, vérification minimale sur longueur, mise en majuscules
ibanTemp = iban.Replace(” “, String.Empty);
if ((ibanTemp.Length < 15) || (ibanTemp.Length > 34)) { return false; };
ibanTemp = iban.ToUpper();

// le code pays retourne à l’arrière
ibanTemp = ibanTemp.Substring(4,iban.Length -4 )+ibanTemp.Substring(0, 4);
// Conversion des valeurs de lettres selon convention A=10, etc.
compteur = 0;

do
{
ch = ibanTemp[compteur]; 

if ((int)ch > 64 && (int)ch < 91)
{
ibanTemp = ibanTemp.Replace(ch.ToString(), ((int)ch – 55).ToString());
}

compteur++;

longueurString = ibanTemp.Length;
}

while (compteur < longueurString);
// Check sur valeur de modulo 97
if ((decimal.Parse(ibanTemp) % 97) == 1)
{ return true; }
else
{ return false;}
}

Commentaires, conseils d’optimisations bienvenus !

A+

 

This entry was posted in C# and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *