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
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
Commentaires
code rio du ortel