|
| Modulus 7 Fra : Michael |
Dato : 08-03-05 15:37 |
|
Jeg skal bruge beregningen til tjekciffer på modulus 7 metoden, er der
en der kender den ?
Med venlig hilsen
Michael
| |
Torben Ægidius Mogen~ (09-03-2005)
| Kommentar Fra : Torben Ægidius Mogen~ |
Dato : 09-03-05 11:49 |
|
mik@letmail.dk (Michael) writes:
> Jeg skal bruge beregningen til tjekciffer på modulus 7 metoden, er der
> en der kender den ?
Jeg har ikke hørt om modulo-7 brugt til checkciffer, det er normalt
modulo-11 man bruger. Men mon ikke metoderne er nogenlunde ens?
Ved modulo-11 metoden ganger man hvert ciffer med en vægt mellem 1 og
10 og lægger disse værdier sammen. Den vegtede sum skal være deleligt
med 11. Kontrolcifferet er som regel det sidste ciffer, som er valgt,
sådan at denne egenskab er opfyldt. Modulo-11 metoden har følgende
egenskaber:
1. Hvis et enkelt ciffer (inklusive kontrolcifret) ændres, er den
vægtede sum ikke længere delelig med 11.
2. Hvis vægtene er forskellige, vil ombytning af to vilkårlige cifre
også betyde at den vægtede sum ikke længere er delelig med 11.
Hvis der er mere end ti cifre i tallet, vil man som regel flytte
ens vægte langt fra hinanden, så ombytning af cifre nær hinanden
fanges af checket.
3. Hvis der kun er et kontrolciffer, vil der for 1 ud af 11 tal ikke
være noget lovligt kontrolciffer.
De to første egenskaber er gode, men den sidste kan give problemer,
hvis man ikke kan tillade sig at bortkaste tal. I f.eks. CPR numre
betyder det, at man springer visse løbenumre over.
Hvis man bruger modulo-7 i stedet for modulo-11, vil der altid være et
lovligt kontrolciffer, men man mister de to andre egenskaber, da man
f.eks. kan erstatte et ciffer med et, der har samme modulo-7 værdi
uden at checket fanger dette.
Det er vigtigt, at det tal man bruger til modulotesten er et primtal.
Torben
| |
Henning Makholm (09-03-2005)
| Kommentar Fra : Henning Makholm |
Dato : 09-03-05 13:06 |
|
Scripsit torbenm@diku.dk (Torben Ægidius Mogensen)
> Det er vigtigt, at det tal man bruger til modulotesten er et primtal.
Hm? EAN-stregkoder har tjekciffer efter en modulus-10-beregning.
--
Henning Makholm "Det er trolddom og terror
og jeg får en værre
ballade når jeg kommer hjem!"
| |
Torben Ægidius Mogen~ (09-03-2005)
| Kommentar Fra : Torben Ægidius Mogen~ |
Dato : 09-03-05 15:38 |
|
Henning Makholm <henning@makholm.net> writes:
> Scripsit torbenm@diku.dk (Torben Ægidius Mogensen)
>
> > Det er vigtigt, at det tal man bruger til modulotesten er et primtal.
>
> Hm? EAN-stregkoder har tjekciffer efter en modulus-10-beregning.
Mit udgangspunkt var, hvis man tillod vilkårlige vægte, dr er mindre
end modulotallet. Brug af 10 som modulotal vil gøre det usikkert at
bruge 2, 4, 5, 6 eller 8 som vægt, da flere forskellige cifre vil give
dig samme resultat. F.eks:
vægt = 2:
2*2 mod 10 = 4
2*7 mod 10 = 4
vægt = 5:
5*0 mod 10 = 0
5*2 mod 10 = 0
5*4 mod 10 = 0
5*6 mod 10 = 0
5*8 mod 10 = 0
Men hvis man vil være helt præcis, så er det vigtige, at alle vægtene
er primiske med det tal, man tager modulo med. Så med 10 som modulo
kan man bruge vægtene 1, 3, 7, 9, 11, 13, 17, 19, ....
Torben
| |
Henning Makholm (09-03-2005)
| Kommentar Fra : Henning Makholm |
Dato : 09-03-05 15:48 |
|
Scripsit torbenm@diku.dk (Torben Ægidius Mogensen)
> Henning Makholm <henning@makholm.net> writes:
>> Scripsit torbenm@diku.dk (Torben Ægidius Mogensen)
>> > Det er vigtigt, at det tal man bruger til modulotesten er et primtal.
>> Hm? EAN-stregkoder har tjekciffer efter en modulus-10-beregning.
> Mit udgangspunkt var, hvis man tillod vilkårlige vægte, dr er mindre
> end modulotallet. Brug af 10 som modulotal vil gøre det usikkert at
> bruge 2, 4, 5, 6 eller 8 som vægt, da flere forskellige cifre vil give
> dig samme resultat.
Aha. I EAN er vægtene 1, 3, 1, 3, 1, 3... Der er tjekcifferet vist
også mere beregnet på at overbevise stregkodelæseren om at det er en
komplet stregkode den har læst, en til at beskytte mod menneskelig
fejltastning.
> Så med 10 som modulo kan man bruge vægtene 1, 3, 7, 9, 11, 13, 17, 19, ....
Men kun 1, 3, 7 og 9 giver forskelligt resultat.
--
Henning Makholm "There is a danger that curious users may
occasionally unplug their fiber connector and look
directly into it to watch the bits go by at 100 Mbps."
| |
Torben Ægidius Mogen~ (10-03-2005)
| Kommentar Fra : Torben Ægidius Mogen~ |
Dato : 10-03-05 11:05 |
|
Henning Makholm <henning@makholm.net> writes:
> Scripsit torbenm@diku.dk (Torben Ægidius Mogensen)
> > Henning Makholm <henning@makholm.net> writes:
> >> Scripsit torbenm@diku.dk (Torben Ægidius Mogensen)
>
> >> > Det er vigtigt, at det tal man bruger til modulotesten er et primtal.
>
> >> Hm? EAN-stregkoder har tjekciffer efter en modulus-10-beregning.
>
> > Mit udgangspunkt var, hvis man tillod vilkårlige vægte, dr er mindre
> > end modulotallet. Brug af 10 som modulotal vil gøre det usikkert at
> > bruge 2, 4, 5, 6 eller 8 som vægt, da flere forskellige cifre vil give
> > dig samme resultat.
>
> Aha. I EAN er vægtene 1, 3, 1, 3, 1, 3... Der er tjekcifferet vist
> også mere beregnet på at overbevise stregkodelæseren om at det er en
> komplet stregkode den har læst, en til at beskytte mod menneskelig
> fejltastning.
Sikkert. Jeg har dog været ude for at en stregkodelæser læste forkert
på en pose tomater, der så kom til at koste 2020 kr. i stedet for 20
kr.
> > Så med 10 som modulo kan man bruge vægtene 1, 3, 7, 9, 11, 13, 17, 19, ....
>
> Men kun 1, 3, 7 og 9 giver forskelligt resultat.
Klart nok, da (10+x)*y mod 10 = x*y mod 10. Det viser bare endnu
tydeligere, at 10 er et dårligt valg som modulo, da man reelt kun har
fire forskellige gode vægte. Og at EAN kun bruger to forskellige er
da helt til grin.
Denne diskussion minder mig iøvrigt om historien om, at der ikke er
CPR numre nok, så man overvejer at droppe modulo-11 egenskaben. Jeg
tror egentlig, at en bedre løsning vil være at udnytte at datoerne
ikke udnytter hele cifferintervallerne: måneden er mellem 1 og 12 od
dagen mellem 1 og 31. Man kunne f.eks. lægge 20 til måneden, hvis man
ikke har CPR numre nok med den rigtige måned. Det vil så give CPR
numre såsom 092307-XXXX for en person født d. 9/3 2007. Det vil ganske
givet forvirre nogen, men det burde ikke være svært at lære folk om
reglen, og man fanger stadig mange fejltastninger. Man skal dog så
rette i de programmer, der checker datointervaller i CPR numre, men
det er vel ikke anderledes end, at man skal ændre i alle programmer,
der checker med modulo-11 reglen.
Torben
| |
Martin Larsen (10-03-2005)
| Kommentar Fra : Martin Larsen |
Dato : 10-03-05 13:14 |
|
"Torben Ægidius Mogensen" <torbenm@diku.dk> skrev i en meddelelse news:7zpsy7lsuo.fsf@app-0.diku.dk...
> Denne diskussion minder mig iøvrigt om historien om, at der ikke er
> CPR numre nok, så man overvejer at droppe modulo-11 egenskaben. Jeg
> tror egentlig, at en bedre løsning vil være at udnytte at datoerne
> ikke udnytter hele cifferintervallerne
Nej, må vi be' om et helt andet system - Lad folk selv vælge
deres cpr-password. Det kan da ikke være mere indlysende
enkelt. (Til mig selv: Er det mon derfor vi ikke allerede har det?)
Mvh
Martin
| |
Henning Makholm (10-03-2005)
| Kommentar Fra : Henning Makholm |
Dato : 10-03-05 13:58 |
|
Scripsit "Martin Larsen" <mlarsen@post7.tele.dk>
> Nej, må vi be' om et helt andet system - Lad folk selv vælge
> deres cpr-password.
Et cpr-nummer er ikke et password. Det er en arkivnøgle.
--
Henning Makholm "Detta, sade de, vore rena sanningen;
ty de kunde tala sanning lika väl som någon
annan, när de bara visste vad det tjänade til."
| |
Martin Larsen (10-03-2005)
| Kommentar Fra : Martin Larsen |
Dato : 10-03-05 14:06 |
|
"Henning Makholm" <henning@makholm.net> skrev i en meddelelse news:87r7inejz1.fsf@kreon.lan.henning.makholm.net...
> Scripsit "Martin Larsen" <mlarsen@post7.tele.dk>
>
> > Nej, må vi be' om et helt andet system - Lad folk selv vælge
> > deres cpr-password.
>
> Et cpr-nummer er ikke et password. Det er en arkivnøgle.
>
Jeg forstår vist ikke hvad du vil sige.
Mvh
Martin
| |
|
|