Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Cryptography & Encryption Ver- und Entschlüsselung, Algorithmen, Kryptoanalyse ? Kryptographie in der Praxis. Blowfish, Triple-DES, XOR u.a.

MD5-Implementierung in Java?

Diskussion: MD5-Implementierung in Java? im Forum Cryptography & Encryption, in der Kategorie Security Area; Anzeige Moin :) Wollte mal schauen, wie man eine Hash-Funktion in Java programmiert - also wie das technisch auszusehen hat. ...

Antwort
Alt 04.11.06, 00:59   #1 (permalink)
 
Registriert seit: 30.05.06
stauder Leistung: Facit NTK
Likes: 0
Standard MD5-Implementierung in Java?

Anzeige

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:

Code:
int zeichen[] = new int[2];
int b = inputstream.read();
zeichen[0] = b;
int b = inputstream.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
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

Code:
BitStrom=0000 0000 0110 1110
- 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
stauder ist offline   Mit Zitat antworten
Alt 04.11.06, 01:48   #2 (permalink)
Senior Member
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

schau mal hier: Java Insel
Da ist das glaube ich erklärt und auch eine Impl in Java als Beispiel. Ist zwar mit nem File, lässt sich aber umschreiben ...

mfg
serow
Serow ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 04.11.06, 01:59   #3 (permalink)
Themenstarter
 
Registriert seit: 30.05.06
stauder Leistung: Facit NTK
Likes: 0
Standard

Serow, erstmal danke - aber da wird der Algorithmus nur angewandt (aus der Java-API).
Was ich gerne machen würde ist den Algorithmus (nur zum eigenen Verständnis) selbst zu implementieren.
stauder ist offline   Mit Zitat antworten
Alt 04.11.06, 08:57   #4 (permalink)
Senior Member
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

Oh, tut mit Leid, da hab ich dich falsch verstanden. In diesem Fall kann ich dir leider nicht weiterhelfen.
Serow ist offline   Mit Zitat antworten
Alt 04.11.06, 13:44   #5 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard RE: MD5-Implementierung in Java?

Hallo,
Zitat:
Original von stauder
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?
Lies doch die Datei einfach binär ein, dann hast du auch keine Probleme mit der Kodierung etc.
Des Weiteren musst du dem MD5 Algorithmus eh bytes übergeben, was eine Umwandlung von Bytes in UTF8 und dann wieder in Bytes schwachsinnig macht,


Zitat:
2.) Wie komme ich nun von einem gegebenen Plaintext p zum Bit-Strom (vorzugsweise in Java)?
Ich dachte du wolltest es selber schreiben, und nicht einfach nur abschreiben.

Sonst schau mal hier:
http://de.wikipedia.org/wiki/Md5

Eigentlich sehr gut erklärt
Elderan ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Cryptography & Encryption » MD5-Implementierung in Java?
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Implementierung von Hash Algos AceKiller73 Cryptography & Encryption 5 09.09.07 11:50
[Python] Hilfe bei Implementierung eines Prim-Alogrithmus [erledigt] Darillian Code Kitchen 2 09.06.07 14:38
Java implementierung Algorithmen Wipika Code Kitchen 2 27.06.06 11:54
JAVA! gibts soziale java fachleute? yakuza Code Kitchen 4 03.05.04 00:53
KOBOL - COBOL-Implementierung für Linux und Windows Tec News & Ankündigungen 1 28.05.02 13:31


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61