Damm-algoritmen er en algoritme til beregning af et kontrolciffer til fejldetektion . Det blev først foreslået i 2004 af M. Damm.
Damm foreslog at bruge en binær operation kendt som Damm-kvasigruppen [1] .
d(j, k) | k | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
j | 0 | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | |
0 | 0 | 3 | en | 7 | 5 | 9 | otte | 6 | fire | 2 | |
en | 7 | 0 | 9 | 2 | en | 5 | fire | otte | 6 | 3 | |
2 | fire | 2 | 0 | 6 | otte | 7 | en | 3 | 5 | 9 | |
3 | en | 7 | 5 | 0 | 9 | otte | 3 | fire | 2 | 6 | |
fire | 6 | en | 2 | 3 | 0 | fire | 5 | 9 | 7 | otte | |
5 | 3 | 6 | 7 | fire | 2 | 0 | 9 | 5 | otte | en | |
6 | 5 | otte | 6 | 9 | 7 | 2 | 0 | en | 3 | fire | |
7 | otte | 9 | fire | 5 | 3 | 6 | 2 | 0 | en | 7 | |
otte | 9 | fire | 3 | otte | 6 | en | 7 | 2 | 0 | 5 | |
9 | 2 | 5 | otte | en | fire | 3 | 6 | 7 | 9 | 0 |
Resultatet af operationen d(j, k) er nemmest at bestemme ud fra tabellen, hvor det er placeret i skæringspunktet mellem den j-te række og den k-te kolonne i tabellen. Operationen valgt af Damm er ikke kommutativ , det vil sige, at betingelsen ikke er opfyldt for den for alle og .
Ved sekventiel udførelse af operationen d(j, k), hvor j er resultatet af den forrige iteration (0 for den første iteration), og k er det næste ciffer i tallet, kan du få en kontrolcifferberegningsalgoritme, der er bedre ( i gennemsnit for de mest almindelige fejl) end almindelig addition modulo 10.
Damms algoritme giver dig mulighed for at opdage to almindelige fejl ved indtastning af tal: at erstatte et ciffer med et andet og permutere to tilstødende cifre.
Lad os antage, at ciffersekvensen 572 transmitteres .
behandlet ciffer → kolonneindeks | 5 | 7 | 2 |
---|---|---|---|
gammelt mellemciffer → rækkeindeks | 0 | 9 | 7 |
tabelindtastning → nyt mellemciffer | 9 | 7 | fire |
Endelig mellemfigur 4 . Det er en kontrolsum. Tilføjes det til nummeret, får vi 5724 .
behandlet ciffer → kolonneindeks | 5 | 7 | 2 | fire |
---|---|---|---|---|
gammelt mellemciffer → rækkeindeks | 0 | 9 | 7 | fire |
tabelindtastning → nyt mellemciffer | 9 | 7 | fire | 0 |
Det resulterende mellemciffer er 0 , så den overførte ciffersekvens er gyldig .
Hash funktioner | |
---|---|
generelle formål | |
Kryptografisk | |
Nøglegenereringsfunktioner | |
Tjek nummer ( sammenligning ) | |
Hashes |
|