next up previous contents
Nächste Seite: Hashwert einer Textdatei berechnen Aufwärts: Hash-Funktionen Vorherige Seite: Eine einfache Hash-Funktion   Inhalt

Verbesserte Hashfunktion

Mit Hilfe eines ``Stellenwertes'' kann das Vertauschen der Zeichenreihenfolge ein Riegel vorgeschoben werden. So wie im dekadischen Zahlensystem die Zahlen 37 und 73 verschiedene Werte haben, ergeben die Eingaben 37 und 73 verschiedene Prüfsummen, wenn jede Stelle der Eingabe mit einem bestimmten Stellenwert versehen wird (Beispiel hash2.java):

import java.io.*;

public class hash2 {
    public static void main (String [] eingabe) {
        String ziffernreihe = eingabe[0];
        byte  bytes[] = new byte[100];
        int ergebnis = 0;
        bytes = ziffernreihe.getBytes();
        for (int i=0;i<bytes.length;i++) {
            System.out.println(bytes[i]);
        }
        System.out.println("------------");
        ergebnis = bytes[0];
        for (int i=1;i<bytes.length;i++) {
            ergebnis = ergebnis ^ (bytes[i]*(i+1));
        }
        System.out.println(ergebnis);
    }
}

Damit erhalten wir für die Eingaben ``da'' und ``bg'' verschiedene Hashwerte:

alfred@newbie:~/java/krypto/hash > java hash2 da
100
97
------------
166
alfred@newbie:~/java/krypto/hash > java hash2 bg
98
103
------------
172



Alfred Nussbaumer 2003-02-10