2010-02-01 10 views
2

Est-ce que quelqu'un connaît le nom formel/officiel de l'algorithme de somme de contrôle utilisé dans les fonctions suivantes?Quel est le nom de cet algorithme de somme de contrôle?


function Checksum($number, $encode = true) 
{ 
    if ($encode === true) 
    { 
     $result = 0; 
     $number = str_split($number, 1); 

     foreach ($number as $value) 
     { 
      $result = ($result + ord($value) - 48) * 10 % 97; 
     } 

     return implode('', $number) . sprintf('%02u', (98 - $result * 10 % 97) % 97); 
    } 

    else if ($number === Checksum(substr($number, 0, -2), true)) 
    { 
     return substr($number, 0, -2); 
    } 

    return false; 
} 

function ifMB($entity, $reference, $amount = 0.00) 
{ 
    $stack = 923; 
    $weights = array(62, 45, 53, 15, 50, 5, 49, 34, 81, 76, 27, 90, 9, 30, 3); 
    $argument = str_split(sprintf('%03u%04u%08u', $entity, $reference, round($amount * 100)), 1); 

    foreach ($argument as $key => $value) 
    { 
     $stack += $value * $weights[$key]; 
    } 

    return sprintf('%03u%04u%02u', $entity, $reference, 98 - ($stack % 97)); 
} 

Merci!

Répondre

5

Il est un code correcteur d'erreur décrit dans ISO7604, conçu pour détecter diverses personnes types d'erreurs les plus courantes font quand transcrivant chaînes de chiffres:

  • Obtenir un chiffre mauvais
  • Transposer deux chiffres (par exemple, 1324 au lieu 1234)
  • Ajout ou manquant à un chiffre

L'algorithme est principalement utilisé dans la vérification du numéro de compte bancaire, mais vous pouvez l'utiliser pour à peu près n'importe quelle chaîne de chiffres.

Références:

+0

Je l'ai vu cet algorithme étant utilisés dans plusieurs endroits différents et aucun d'entre eux sont liés aux IBAN. J'ai ajouté un autre exemple à ma question. –

+0

OK, réparé la réponse un peu. – Grandpa