Menu

Numéros sans chiffre de contrôle : format uniquement, jamais validés

Les numéros sans chiffre de contrôle ne peuvent être vérifiés que pour leur forme. Un verdict uniquement formel est un résultat légitime et utile — et ce n'est pas une approbation de la valeur.

Publié le

  • validation
  • format
  • données de test

Beaucoup des identifiants qu’un système gère n’ont aucune arithmétique publiée derrière eux. Il n’y a pas de caractère final à recalculer, pas de somme pondérée à comparer, pas de reste à interroger. La chaîne a une forme documentée et rien d’autre, et tout ce qu’un validateur peut honnêtement faire est de confirmer la forme.

Cette situation met les gens mal à l’aise, et le malaise produit deux erreurs opposées. L’une consiste à inventer une règle pour que le champ puisse renvoyer une réponse satisfaisante. L’autre consiste à renoncer et à tout accepter. Toutes deux sont évitables dès lors que le verdict uniquement formel est traité comme un résultat de premier ordre plutôt que comme un aveu de manque d’imagination.

Quels numéros n’ont pas de chiffre de contrôle publié ?

La catégorie est plus large qu’elle n’en a l’air. Elle comprend des identifiants issus de registres qui n’ont jamais documenté de règle interne, des codes internes attribués par une entreprise plutôt que par un organisme de normalisation, et des valeurs conçues pour être lues par des humains et stockées par des agents plutôt que vérifiées par des machines.

Elle comprend aussi des numéros qui contiennent bel et bien une structure latente que personne n’a publiée. Un registre peut fort bien attribuer les numéros séquentiellement, ou y intégrer une région ou une date, sans jamais énoncer la convention. De l’extérieur, cette structure est invisible et inutilisable, et traiter un motif deviné comme une règle est pire que d’admettre son ignorance.

Le test pratique est la documentation, pas l’intuition. Si l’autorité émettrice a publié une règle de contrôle, il y a quelque chose à implémenter. Si elle a publié une forme, implémentez la forme. Si elle n’a publié ni l’une ni l’autre, le niveau de couverture honnête est « aucun », et aucune analyse d’un échantillon de valeurs réelles ne devrait pouvoir modifier cette classification.

Les exemples de cet article sont des formes illustratives plutôt que des valeurs réelles. Aucun identifiant authentique n’est reproduit ici, et les descriptions structurelles ne décrivent que des règles publiques.

Pourquoi certains identifiants ne peuvent-ils pas être vérifiés par l’arithmétique ?

Un chiffre de contrôle a besoin de deux choses : une règle qui fait correspondre le corps à un caractère unique, et la certitude que le registre émetteur applique cette règle. Là où l’une des deux manque, l’arithmétique n’a rien avec quoi travailler.

L’histoire explique la plupart des lacunes. De nombreux registres précèdent l’informatique et ont été conçus pour des agents qui recopiaient des valeurs d’un formulaire à l’autre, si bien que leurs concepteurs n’avaient aucune raison d’intégrer une vérification machine dans le numéro. D’autres ont été introduits par une législation qui précisait ce que le numéro identifie et laissait le format interne à l’agence, laquelle n’a ensuite rien publié.

La confidentialité explique une partie du reste. Une règle de contrôle publiée est un fait public qui ne révèle rien sur un individu, donc elle est rarement retenue pour cette raison — mais le format environnant l’est parfois, et un schéma sans format publié n’a pas non plus de contrôle publié.

Le résultat est un paysage à la variété réelle en matière de couverture. Cette variété fait l’objet du tableau pays par pays, où les mêmes trois niveaux se répètent à travers des registres de toutes tailles.

Que signifie réellement « format uniquement » ?

Un verdict uniquement formel dit trois choses précises et une non-chose importante. Les trois sont que la chaîne utilise des caractères autorisés, que sa longueur fait partie de celles que le schéma définit, et que toute division interne documentée est cohérente avec ce qui a été fourni. La non-chose est la validité, car il n’y a aucune arithmétique à confirmer.

Le dire clairement est un problème de communication avant d’être un problème technique. Les utilisateurs lisent les coches vertes comme une approbation, si bien qu’un résultat uniquement formel ne doit pas être habillé du même style de succès qu’un contrôle réussi. Ce n’est pas un succès moindre ; c’est une affirmation différente, et l’interface doit rendre la différence visible sans laisser entendre que quelque chose a mal tourné.

Cela compte aussi pour les systèmes en aval. Une tâche d’import qui reçoit des confirmations uniquement formelles ne doit pas les écrire dans la même colonne que des valeurs confirmées par algorithme, car les deux ont des taux d’erreur différents et finiront par être traitées différemment lors d’un audit.

Comment vérifier un numéro uniquement formel ?

Vérifiez ce que la documentation permet, et arrêtez-vous là.

  1. Normalisez l’entrée — retirez les séparateurs, réduisez les espaces, pliez la casse — et conservez l’original.
  2. Vérifiez le jeu de caractères, en rejetant les lettres dans un schéma numérique et les symboles partout.
  3. Vérifiez la longueur par rapport aux tailles documentées du schéma.
  4. Inspectez toute structure interne documentée, comme un préfixe fixe ou une position réservée.
  5. Renvoyez un verdict uniquement formel, formulé de manière à n’affirmer que la forme et rien d’autre.

N’ajoutez pas d’étape six. Calculer votre propre somme de contrôle pour un schéma non publié crée une règle qui divergera du registre la première fois qu’une valeur authentique la franchira, et la divergence sera impossible à expliquer à un utilisateur.

Deux détails sont faciles à manquer. Certains schémas définissent plus d’une longueur autorisée, si bien que le contrôle de longueur est un test d’appartenance plutôt qu’un test d’égalité. Et la normalisation n’est pas une réparation : retirer les marques de formatage nettoie l’entrée, mais cela ne transforme pas une approximation en valeur valide.

Là où un contrôle de format reste utile

Les contrôles de format sont peu coûteux, et ils interceptent les erreurs qui dominent réellement le trafic réel : un caractère perdu lors d’une copie, une valeur collée depuis la mauvaise colonne, une chaîne alphabétique collée dans un champ numérique. Mesuré à l’aune de ces défaillances, un test de forme se rentabilise en une journée d’utilisation en production.

Ils protègent aussi les systèmes derrière le formulaire. Un champ qui rejette les caractères interdits avant stockage garde une classe de bruit hors du traitement en aval, et un champ qui impose une longueur documentée tient un bogue de troncature à distance de l’entrepôt de données.

Ce qu’un contrôle de format ne peut pas faire, c’est tout ce qui exige le registre. Confirmer qu’un identifiant a été émis, qu’il appartient à la personne qui le présente, ou qu’il est encore actif sont autant d’opérations de consultation, et elles appartiennent à côté du contrôle de format plutôt qu’à l’intérieur. Là où une telle consultation existe, traitez-la comme une dépendance réseau avec ses propres délais d’attente et défaillances, dans l’esprit de la conception de frontière examinée séparément.

Pour les développeurs : quatre verdicts et les mots pour les exprimer

Donnez un type au concept, et donnez à chaque branche son propre libellé.

Verdict Signification Libellé suggéré
Valide L’algorithme publié a été appliqué et le caractère final correspond Le chiffre de contrôle correspond à ce schéma
Invalide L’algorithme a été appliqué et le caractère final ne correspond pas Le format correspond mais pas le chiffre de contrôle
Format uniquement Aucun algorithme n’est publié ; la forme a été confirmée Le format est valide ; la validité ne peut pas être confirmée
Aucune règle L’entrée ne correspond à aucun schéma implémenté par l’outil Non reconnu — cela ne signifie pas que la valeur est fausse

Deux mots méritent d’être bannis de la base de code. Le premier est « réel », qu’aucun de ces verdicts n’établit. Le second est « faux », qu’aucun d’eux n’établit non plus. Un outil qui les emploie finira par être cru, et les croyances seront fausses. Si un formulaire a besoin de savoir quelque chose de vrai sur le monde, cette connaissance vient d’une consultation, pas de l’arithmétique ; la vue en trois couches de la validation explique pourquoi ces couches ne peuvent pas être fondues l’une dans l’autre.

Étapes suivantes

Identifiez chaque champ numérique de votre produit qui renvoie actuellement un simple vrai ou faux, et vérifiez lequel des quatre verdicts il exprime réellement. Prenez ensuite un schéma uniquement formel et confirmez que votre interface dit quelque chose de différent pour lui que pour un contrôle réussi, en utilisant l’outil de validation de numéros comme référence pour ce libellé.

Continuer la lecture

Articles sur Validateur de numéros de carte et d'identité