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.
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
Nå, det havde du jo skrevet. Ligemeget så :-)
Tak for linket alligevel. ;-)
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 :-)
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.