Moin 
Wollte mal schauen, wie man eine Hash-Funktion in Java programmiert - also wie das technisch auszusehen hat. Gegeben sind ja:
- Plaintext p
- MD5-Algorithmus (rfc-1321)
Nun stellt sich mir die Frage, wie ich den Plaintext einlesen muss. Was ich will, ist doch eigentlich ein Bit-Strom, so wie ich das verstehe. Der Algorithmus setzt ja vorraus, dass ich den Strom in Worte (32-bit, 4 Byte) unterteile, bevor ich den eigentlich Hash-Wert berechnen kann.
Meine Fragen sind daher:
1.) Verstehe ich das so richtig?
2.) Wie komme ich nun von einem gegebenen Plaintext p zum Bit-Strom (vorzugsweise in Java)?
*EDIT*
Kleiner Nachtrag:
1.) Wenn ich eine "normale" Text-Datei für den Plaintext benutze und diesen einlese, kann ich davon ausgehen, dass ich in der Regel einen UTF-8 habe?
2.) Angenommen also, es wäre UTF-8 - verstehe ich den Aufbau richtig, dass
- 2 Bytes Strom = 1 Zeichen Klartext sind?
- ich diese 2 Bytes als Hex-Werte im Hex-Editor ansehen kann?
- nur Werte von >128 von Bedeutung sind (also nur 1 der 2 Byte das Zeichen "selbst" beherbergt?)
Wenn ich also einen Byte-Strom einlesen könnte (was ja möglich ist in Java) - mal am Beispiel verdeutlichen:
ich bekäme also in zeichen[] 2 Byte-Werte (also 2 Werte zwischen 0 und 255) und könnte daraus 16 Bit wandeln?
Wäre also
So wäre also mein ASCII-Zeichen des Plaintextes ein "n" (Hex: 0x6E) ??
Was wiederum dazu führen würde, dass ich ein Bit-Strom für "n" von
- Ist das so richtig?
- Zwei dieser Bit-Ströme ergäben also ein "Wort"?
*EDIT_2*
Wenn ich den Algorithmus "allgemeingültig" machen will, so müsste er in der Lage sein, fast alle verfügbaren Zeichen der Welt (fängt ja bei uns mit Umlauten an) einlesen und verarbeiten zu können, oder? Demnach müsste ich davon ausgehen, dass ein WORT = 1 Zeichen Klartext abbildet - also UTF-8 nutzen mit 4 Byte pro Zeichen?
Leider habe ich im RFC und sonstwo keine Angaben zum Zeichensatz gefunden. Aber in UTF-8 kann ja eine Menge abgebildet werden.
--> Wird da jetzt ein Schuh draus?
wkr,
stauder
Wollte mal schauen, wie man eine Hash-Funktion in Java programmiert - also wie das technisch auszusehen hat. Gegeben sind ja:
- Plaintext p
- MD5-Algorithmus (rfc-1321)
Nun stellt sich mir die Frage, wie ich den Plaintext einlesen muss. Was ich will, ist doch eigentlich ein Bit-Strom, so wie ich das verstehe. Der Algorithmus setzt ja vorraus, dass ich den Strom in Worte (32-bit, 4 Byte) unterteile, bevor ich den eigentlich Hash-Wert berechnen kann.
Meine Fragen sind daher:
1.) Verstehe ich das so richtig?
2.) Wie komme ich nun von einem gegebenen Plaintext p zum Bit-Strom (vorzugsweise in Java)?
*EDIT*
Kleiner Nachtrag:
1.) Wenn ich eine "normale" Text-Datei für den Plaintext benutze und diesen einlese, kann ich davon ausgehen, dass ich in der Regel einen UTF-8 habe?
2.) Angenommen also, es wäre UTF-8 - verstehe ich den Aufbau richtig, dass
- 2 Bytes Strom = 1 Zeichen Klartext sind?
- ich diese 2 Bytes als Hex-Werte im Hex-Editor ansehen kann?
- nur Werte von >128 von Bedeutung sind (also nur 1 der 2 Byte das Zeichen "selbst" beherbergt?)
Wenn ich also einen Byte-Strom einlesen könnte (was ja möglich ist in Java) - mal am Beispiel verdeutlichen:
Code:
int zeichen[] = new int[2];
int b = [i]inputstream[/i].read();
zeichen[0] = b;
int b = [i]inputstream[/i].read();
zeichen[1] = b;
ich bekäme also in zeichen[] 2 Byte-Werte (also 2 Werte zwischen 0 und 255) und könnte daraus 16 Bit wandeln?
Wäre also
Code:
zeichen[0]=0
zeichen[1]=110
Was wiederum dazu führen würde, dass ich ein Bit-Strom für "n" von
Code:
BitStrom=0000 0000 0110 1110
- Zwei dieser Bit-Ströme ergäben also ein "Wort"?
*EDIT_2*
Wenn ich den Algorithmus "allgemeingültig" machen will, so müsste er in der Lage sein, fast alle verfügbaren Zeichen der Welt (fängt ja bei uns mit Umlauten an) einlesen und verarbeiten zu können, oder? Demnach müsste ich davon ausgehen, dass ein WORT = 1 Zeichen Klartext abbildet - also UTF-8 nutzen mit 4 Byte pro Zeichen?
Leider habe ich im RFC und sonstwo keine Angaben zum Zeichensatz gefunden. Aber in UTF-8 kann ja eine Menge abgebildet werden.
--> Wird da jetzt ein Schuh draus?
wkr,
stauder