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