Vérifier un IMEI : algorithme de Luhn expliqué
Vérifiez le format à 15 chiffres et la somme Luhn avec un exemple et des vecteurs QA. Ce test ne vérifie ni attribution, ni propriété, ni liste noire.
Dans ce guide, « valide » signifie qu'un candidat contient 15 chiffres et que le dernier correspond à la somme de contrôle Luhn des 14 premiers. Cela n'établit ni attribution, ni propriété, ni déverrouillage, ni modèle, ni statut de liste noire.
Le calcul détaillé et le validateur d'IMEI testent uniquement ce contrat de format.
Ce que « valide » signifie
Un IMEI réussit la validation lorsqu'il satisfait trois conditions :
- Longueur — un candidat IMEI comporte exactement 15 chiffres. IMEISV est un identifiant distinct à 16 chiffres avec deux chiffres de version logicielle à la place du chiffre de contrôle IMEI.
- Caractères — après normalisation des séparateurs autorisés, il ne reste que des chiffres
0–9. - Somme de contrôle — le dernier chiffre (chiffre 15) correspond à la valeur que l'algorithme de Luhn calcule à partir des 14 premiers chiffres.
Le chiffre de contrôle est dérivé des autres. Luhn détecte toute substitution d'un chiffre et la plupart des transpositions adjacentes, mais il s'agit d'une somme de contrôle, pas d'une preuve d'identité.
Une réussite Luhn ne prouve pas que l'identifiant a été attribué, appartient au téléphone présenté ou figure sur une liste noire. Pour les sources de statut, consultez le guide de vérification d'IMEI en liste noire.
La méthode la plus rapide : utiliser un validateur
Si vous avez seulement besoin d'une réponse par oui ou non, sautez le calcul :
- Ouvrez le validateur d'IMEI.
- Collez le numéro à 15 chiffres (les espaces et tirets sont supprimés automatiquement).
- Lisez le résultat — valide ou non valide — accompagné d'une décomposition du TAC, du numéro de série et du chiffre de contrôle.
Cette méthode convient aux vérifications ponctuelles, notamment pour les utilisateurs non techniques. Comprendre le calcul aide aussi à repérer les données erronées.
L'algorithme de Luhn, étape par étape
Luhn est une somme de contrôle modulo 10 utilisée pour les IMEI et d'autres identifiants. Pour un candidat IMEI à 15 chiffres, appliquez cette procédure.
Étape 1 — Prenez les 14 premiers chiffres
Le 15e chiffre est le chiffre de contrôle ; vous le comparerez à la fin. Travaillez avec les chiffres 1 à 14.
Étape 2 — Doublez un chiffre sur deux
En partant du chiffre le plus à droite parmi ces 14 et en allant vers la gauche, doublez un chiffre sur deux. (De manière équivalente, doublez les chiffres situés aux positions paires en comptant depuis la gauche.)
Étape 3 — Réduisez les résultats à deux chiffres
Si le doublement produit un nombre supérieur à 9, soustrayez 9 (ou additionnez les deux chiffres entre eux — même résultat). Ainsi 12 devient 3, 16 devient 7, 10 devient 1.
Étape 4 — Additionnez tout
Additionnez tous les chiffres traités : ceux qui ont été doublés et réduits, plus ceux laissés intacts.
Étape 5 — Calculez le chiffre de contrôle
Trouvez le multiple de 10 immédiatement supérieur ou égal à votre somme, puis soustrayez la somme. Ce résultat est le chiffre de contrôle attendu. S'il est égal au 15e chiffre de votre IMEI, le numéro est valide. Si le total est déjà un multiple de 10, le chiffre de contrôle est 0.
Un exemple complet
Validons l'IMEI 35 824011 345678 4. Les 14 premiers chiffres sont :
3 5 8 2 4 0 1 1 3 4 5 6 7 8
Doublez un chiffre sur deux (les chiffres aux positions 2, 4, 6, 8, 10, 12, 14 depuis la gauche — 5, 2, 0, 1, 4, 6, 8) :
| Original | Doublé | Réduit |
|---|---|---|
| 5 | 10 | 1 |
| 2 | 4 | 4 |
| 0 | 0 | 0 |
| 1 | 2 | 2 |
| 4 | 8 | 8 |
| 6 | 12 | 3 |
| 8 | 16 | 7 |
Intercalez-les maintenant avec les chiffres de position impaire laissés intacts (3, 8, 4, 1, 3, 5, 7), en gardant chaque chiffre à sa position d'origine :
3, 1, 8, 4, 4, 0, 1, 2, 3, 8, 5, 3, 7, 7
Somme : 3 + 1 + 8 + 4 + 4 + 0 + 1 + 2 + 3 + 8 + 5 + 3 + 7 + 7 = 56.
Chiffre de contrôle : le multiple de 10 immédiatement supérieur ou égal à 56 est 60, donc 60 − 56 = 4.
Le chiffre de contrôle calculé est 4, et le 15e chiffre de notre IMEI est lui aussi 4. Ils correspondent, donc 358240113456784 est un IMEI valide. (C'est le même cheminement que la calculatrice de la page d'accueil effectue côté serveur pour chaque numéro qu'elle génère.)
Vecteurs QA qui séparent format et identité
| Candidat | Résultat de format | Interprétation |
|---|---|---|
490154203237518 |
Réussite | Contrôle Luhn positif ; attribution inconnue |
490154203237519 |
Échec | Chiffre de contrôle changé de 8 à 9 |
000000000000000 |
Réussite | Montre que Luhn ne prouve pas l'identité |
49015420323751 |
Échec | Seulement 14 chiffres ; contrôle manquant |
4901542032375180 |
Pas un candidat IMEI | Seize chiffres exigent un contrat IMEISV distinct |
Pour des tests automatisés réutilisables, téléchargez les vecteurs JSON CC0 ou consultez le contrat et ses limites (en anglais).
Raisons courantes d'un échec de validation
Les causes courantes d'un échec de format comprennent :
- Erreur de transcription — Luhn détecte un chiffre modifié et de nombreuses transpositions adjacentes.
- Mauvaise longueur — 14 chiffres n'ont pas de chiffre de contrôle ; 16 doivent être analysés selon un contrat IMEISV distinct.
- Caractères cachés : un espace, un tiret ou une espace insécable peut provenir d'un copier-coller depuis un tableur. Normalisez uniquement les espaces, les séparateurs Unicode et les tirets ASCII ; rejetez tout autre caractère.
- Pas un IMEI du tout — un numéro de série, un MEID ou une chaîne aléatoire pris à tort pour un IMEI. Une valeur fictive peut réussir Luhn, comme le montre le vecteur composé de zéros. Rejetez-la par une règle métier explicite, sans traiter Luhn comme une base d'attributions.
Vérifier des IMEI à grande échelle
Valider un numéro est facile. En valider des milliers — dans une chaîne de QA, une tâche de détection de fraude ou un script de nettoyage de données — appelle l'automatisation. La logique est assez compacte pour être implémentée dans n'importe quel langage. Voici la vérification Luhn essentielle en JavaScript :
function isValidImei(imei) {
const digits = String(imei).replace(/[\s\p{Z}-]+/gu, '');
if (!/^[0-9]{15}$/.test(digits)) return false;
let sum = 0;
for (let i = 0; i < 15; i++) {
let d = Number(digits[i]);
// Doubler un chiffre sur deux depuis la droite.
if ((15 - i) % 2 === 0) {
d *= 2;
if (d > 9) d -= 9;
}
sum += d;
}
return sum % 10 === 0;
}
Remarquez cette propriété élégante : si vous incluez le chiffre de contrôle dans la somme et que le total est divisible par 10, l'IMEI est valide. C'est la même règle, exprimée en une seule ligne.
Pour obtenir des données de test structurellement valides, Random IMEI génère des lots avec des préfixes issus de son instantané TAC, daté et non officiel. Exportez-les uniquement vers des tests isolés.
Validation et génération ont des contrats distincts
- Valider répond à « ce numéro existant est-il bien formé ? » Utilisez le validateur d'IMEI.
- Générer produit de nouveaux numéros valides pour les tests. Utilisez le générateur.
Les équipes QA utilisent les deux : elles génèrent un lot d'IMEI valides comme jeux de données de test, puis vérifient que leur application les valide correctement (et rejette les numéros défectueux conçus exprès).
FAQ
Comment vérifier si un IMEI est valide ?
Confirmez qu'il fait exactement 15 chiffres, qu'il ne contient que des chiffres et que le dernier chiffre correspond à la somme de contrôle de Luhn des 14 premiers. La méthode la plus rapide consiste à le coller dans le validateur d'IMEI, qui effectue les trois vérifications instantanément.
Qu'est-ce que l'algorithme de Luhn ?
L'algorithme de Luhn (modulo 10) est une formule de somme de contrôle qui détecte les erreurs accidentelles dans les numéros d'identification. Pour les IMEI, il vérifie que le 15e chiffre est mathématiquement cohérent avec les 14 autres, ce qui permet d'attraper la plupart des fautes de frappe d'un seul chiffre et des interversions.
Un IMEI valide signifie-t-il que le téléphone est authentique ?
Non. La validation confirme uniquement la cohérence interne du format et de la somme de contrôle. Elle n'établit ni attribution, ni modèle, ni propriété, ni statut de liste noire. Utilisez une source autorisée pour ces questions.
Pourquoi mon IMEI échoue-t-il à la validation ?
Les causes les plus fréquentes sont un chiffre mal saisi, une mauvaise longueur (14 ou 16 au lieu de 15), ou des séparateurs copiés depuis une autre application. Supprimez uniquement les espaces, les séparateurs Unicode et les tirets ASCII ; rejetez tout autre caractère, puis vérifiez la longueur.
Puis-je valider un IMEI hors ligne ?
Oui. La vérification de Luhn est une simple arithmétique qui ne nécessite ni connexion internet ni base de données. Vous pouvez la calculer à la main, dans un tableur ou avec quelques lignes de code comme l'exemple ci-dessus.
Un numéro à 14 chiffres peut-il être un IMEI valide ?
Non. Un IMEI standard fait 15 chiffres. Une valeur à 14 chiffres n'a pas son chiffre de contrôle (il peut s'agir uniquement du TAC plus le numéro de série). L'IMEISV à 16 chiffres est une variante distincte qui remplace le chiffre de contrôle par un numéro de version logicielle à 2 chiffres.
Où puis-je obtenir des IMEI valides pour les tests ?
Générez-les. Le générateur Random IMEI crée des valeurs à 15 chiffres avec des préfixes issus de son instantané local daté et des chiffres de contrôle Luhn corrects. Chaque résultat réussit cette validation structurelle, mais le mappage n'est pas une recherche officielle.
Sources et lectures complémentaires
Essayez nos outils
Créez des fixtures valides selon Luhn ou vérifiez le format à 15 chiffres et la somme d'une valeur.
Articles connexes
Qu'est-ce qu'un IMEI ? Structure, IMEISV et limites de Luhn
L'IMEI identifie un équipement mobile. Découvrez le TAC, le numéro de série, le chiffre de contrôle, les identifiants SIM et les limites de Luhn.
Qu'est-ce qu'un TAC ? Les 8 premiers chiffres de l'IMEI
Le TAC correspond aux 8 premiers chiffres de l'IMEI et peut être associé à un type via une source autorisée. Distinguez attribution et recherche.
IMEI en lot : Luhn, données de test et automatisation QA
Générez jusqu'à 50 valeurs valides selon Luhn avec RandomIMEI.com, ou créez un générateur local dédupliqué pour de plus grands jeux QA.