Libre arbitre

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 28 juillet 2011

Code Java pour vérifier code RIO

Il est possible d'utiliser le code Java suivant pour vérifier le code RIO :

private static boolean is_RIO(String rio, String sMsisdn) {
    if (rio.length() != 12)
    return false;
    if (!sMsisdn.matches("0\\d{9,9}"))
        throw new IllegalArgumentException(
            "Le numéro de téléphone (msisdn) doit être au format 0612345678");

    String sRio = rio.toUpperCase();
    String operateur = sRio.substring(0, 2);
    String typeContrat = sRio.substring(2, 3);
    String refClient = sRio.substring(3, 9);
    if (!typeContrat.equals("P") && !typeContrat.equals("E"))
        return false;

    String sOrdre = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+";

    int[] nRes = { 0, 0, 0 };
    String sTmp = operateur + typeContrat + refClient + sMsisdn;

    for (int n = 0; n < 19; n++) {
        int nPos = sOrdre.indexOf(sTmp.substring(n, n + 1));
        nRes[0]= (nRes[0] + nPos) % 37;
        nRes[1] = ((2 * nRes[1]) + nPos) % 37;
        nRes[2] = ((4 * nRes[2]) + nPos) % 37;
    }

    String sCleCalculee = sOrdre.substring(nRes[0], nRes[0] + 1) +  sOrdre.substring(nRes[1], nRes[1] + 1) + sOrdre.substring(nRes[2], nRes[2] + 1);
    return sRio.substring(9).equals(sCleCalculee);
}


La même possibilité est offerte avec le code PHP

mercredi 29 juin 2011

Code PHP pour vérifier code RIO

Afin de vérifier le code de contrôle d'un RIO, il est possible d'utiliser le code PHP suivant (envoi depuis un formulaire du code RIO et du numéro de téléphone mobile en méthode POST) :


<?php
$rio 
$_POST["coderio"];
$mobile $_POST["mobile"];
if (
$rio == "" or $mobile == "") echo "Un des champs est vide";
else if (
strlen($rio) != 12) echo "Le code RIO doit contenir 12 caractères exactement";
else {
    
$rio strtoupper($rio);
    
$operateur substr($rio02);
    
$typecontrat substr($rio21);
    
$refclient substr($rio36);
    if (
$typecontrat != "P" && $typecontrat != "E") echo "Le code RIO est erroné, l'identification du contrat est faux";
    
$ordre "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+";
    
$res = array(000);
    
$tmp $operateur $typecontrat $refclient $mobile;
    for (
$n 0;$n 19;$n++) {
        
$pos strpos($ordresubstr($tmp$n1));
        
$res[0] = ($res[0] + $pos) % 37;
        
$res[1] = (($res[1]) + $pos) % 37;
        
$res[2] = (($res[2]) + $pos) % 37;
    }
    
$clecalculee substr($ordre$res[0], 1) . substr($ordre$res[1], 1) . substr($ordre$res[2], 1);
    if (
substr($rio9) != $clecalculee) echo "Le code RIO est erroné";
    else echo 
"<em>!!! Le code RIO est BON !!!</em>";
}
?> 

Pour consulter le code Java qui permet d'effectuer la vérification du code RIO, c'est sur cette page.