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