Kontrolcifre

Så er der igen opmærksomhed på forkerte kontonumre ved pengeoverførsler. Jeg fik lyst til at fortælle lidt om check-cifret, som (normalt) gør at fejlindtastninger fanges.

Kontrolcifre bruges mange steder. Kontonummer, kortnummer, CPR-nummer, girokort… Kontrolcifret er det sidste tal i rækken, og det beregnes ud fra de øvrige cifre med en formel. Når man fx. opretter et nyt CPR-nummer, så er de første 6 cifre datoen, de næste tre fastsættes ud fra en masse regler, og det sidste ciffer beregnes med en modulus 11-formel. Når man så indtaster et CPR-nummer på en computer, så kan den med en simpel formel se om det sidste ciffer passer. Og det gør det (næsten) aldrig, hvis man skriver forkert.

Sådan et kontrolciffer er designet til at afsløre tastefejl. Hvis man indtaster et tilfældigt tal (med et passende antal cifre), er der altså kun 10% chance for at det kan være et CPR-nummer. Men hvis man prøver at indtaste et rigtigt CPR-nummer, men skriver forkert, er der nærmere 1-3% chance for at kontrolcifret passer. Og hvis man kun laver ét ciffer forkert, vil kontrolcifret helt sikkert afsløre det. Det er da smart.

Så når man indtaster kontonummeret forkert, er det altså sjældent at overførslen gennemføres. Og selv hvis kontrolcifferet tilfældigvis passer, så er det langt fra sikkert kontonummeret eksisterer.

Modulus 10

Modulus 10, også kendt som Luhn algoritmen, bruges fx. til det 16-cifrede betaler-id på indbetalingskort og Visakort-numre.

Sådan beregner du det manuelt: Læs cifrene fra højre mod venstre, og skriv dem ned på et stykke papir. Hverandet ciffer gange du med to. Skriv et plus mellem hvert ciffer, og beregn summen. Hvis kan divideres med 10 uden rest, er kontrol-cifret korrekt.

Eksempel (tal i parentes er resultatet af at gange med 2):

86413 => 3 + (2) + 4 + (1 + 2) + 8 = 20 => 20/10 = 2 med nul i rest.

Prøv selv med dit Visa/Dankort, hvis du har et.

Modulus 11

Modulus 11-metoden bruges til CPR-numre, kontonumre mm. (Der er også andre algoritmer som kan kaldes “modulus 11″, men dette er vist den mest almindelige.)

Sådan beregner du det manuelt: Læs cifrene fra højre mod venstre. Første tal ganger du med 1 (det starter nemt) og skriver ned. Det næste tal ganger du med to, og skriver ned. Derefter 3, osv. Når du har ganget med 7, skal du ved næste ciffer gå tilbage til 2. Dvs. 1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 2, 3, 4… Skriv et plus mellem hvert tal, og beregn summen. Hvis tallet kan divideres med 11 uden rest, er kontrol-cifret korrekt.

Eksempel: 86428 => 8 + 4 + 12 + 24 + 40 = 88 => 88/11 = 8 med nul i rest.

Prøv selv med dit eget CPR-nummer.

OBS: Ikke alle kontonumre bruger netop denne type kontrolciffer. Og siden oktober 2007 er det i øvrigt heller ikke alle CPR-numre som har korrekt kontrol-ciffer.

Bonus: Du får ekstra point* hvis du selv kan regne ud, hvorfor ikke alle tal, kan få et modulus-11 kontrol-ciffer.

*) Point kan ikke indløses til kontanter, men hvis du er heldig kan de veksles til street-credit.

5 comments to Kontrolcifre

  • Jonas

    Modulus-11 testen gælder ikke længere for CPR-numre (den gælder selvfølgelig for langt de fleste allerede uddelte, men man kan ikke længere regne med den).

    Se http://www.cpr.dk/cpr/site.aspx?p=108&t=visartikel&Articleid=4347

  • Jonas

    Nå, det havde du jo skrevet. Ligemeget så :-)

  • Christian

    Og som jeg forstår teksten over kan vi heller ikke bruge modulus 11 til at verficere om vi har et korrekt kontonummer bestående af regnr + kontonummer?

    Håber at høre fra dig :-)

    • Niels

      Det er korrekt. Så vidt jeg ved er det op til den enkelte bank at vælge en algoritme. Men jeg vil gætte på at de alle opfylder følgende krav:

      * Hvis ét ciffer er forkert, vil kontrolcifret altid afsløre det.
      * Hvis to nabo-cifre er byttet om, vil kontrolcifret næsten altid afsløre det. (Nok 95-99%)
      * Alle fejl har mindt 90% chance for at blive afsløret med kontrol-ciffer

      De to første dækker nok over de mest almindelige taste fejl. Laver du fejl ud over det, burde du nok se det selv med en halv-sjusket kontrol.

Leave a Reply to Niels

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>