AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MD5 Länge einfügen als 64 Bit?

Ein Thema von fortuneNext · begonnen am 25. Feb 2009 · letzter Beitrag vom 5. Mär 2009
Antwort Antwort
Seite 1 von 3  1 23      
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#1

MD5 Länge einfügen als 64 Bit?

  Alt 25. Feb 2009, 23:54
Hallo
Aktuell probiere ich mal, MD5 in Delphi einzubauen. Da es nicht sonderlich performant sein muss, habe ich mir dazu mal wieder den Wikipedia-Pseudoquellcode angeguckt und versuche den jetzt in Delphi umzusetzen. Bei einem Stück bleibe ich jedoch hängen:


Zitat:
erweitere message um bits "0" bis Länge von message in bits ≡ 448 (mod 512)
erweitere message um message_laenge als 64-Bit little-endian Integer
1. Wie finde ich denn die Länge IN BITS heraus?

2. Evtl. erschließt sich die Antwort schon aus der Antwort zu 1. ansonsten:
Soll die Länge als Int64 gespeichert werden?
Aber angenommen die Länge beträgt 4 - dann wird eine 4 an den String drangehangen. Aber das eine Zeichen wird doch nicht reichen, aus den 448 Bit 512-Bit zu machen? Wahrscheinlich verstehe ich vollkommen falsch was gemeint ist.

Wäre dankbar für ein bischen Hilfe

mfg
fortuneNext
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: MD5 Länge einfügen als 64 Bit?

  Alt 26. Feb 2009, 00:10
Zitat von fortuneNext:
1. Wie finde ich denn die Länge IN BITS heraus?
Ein Byte hat acht Bit!


Zitat von fortuneNext:
2. Evtl. erschließt sich die Antwort schon aus der Antwort zu 1. ansonsten:
Soll die Länge als Int64 gespeichert werden?
Aber angenommen die Länge beträgt 4 - dann wird eine 4 an den String drangehangen. Aber das eine Zeichen wird doch nicht reichen, aus den 448 Bit 512-Bit zu machen? Wahrscheinlich verstehe ich vollkommen falsch was gemeint ist.
Du sollst die Länge als 64 Bit LE-Int anhängen, nicht als String
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: MD5 Länge einfügen als 64 Bit?

  Alt 26. Feb 2009, 00:11
Was spricht gegen eine fertige Unit?

Edit: Vielleicht hilft dir ja folgendes weiter...
Delphi-Quellcode:
function ZustandZuBits(Anzahl:integer):integer;
var bits:real;
begin
  bits:=ln(Anzahl) / ln(2);
  Result:=trunc(bits);
  if Result < bits then
    inc(Result);
end;
Angehängte Dateien
Dateityp: pas md5_327.pas (12,3 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: MD5 Länge einfügen als 64 Bit?

  Alt 26. Feb 2009, 06:26
Zitat:
:Shocked: Ein Byte hat acht Bit!
Okay, also doch so einfach, Länge * 8?
Danke Dachte das wäre schwieriger

Zitat:
Du sollst die Länge als 64 Bit LE-Int anhängen, nicht als String Grübelnd...
Und wie mache ich das?

Zitat:
Was spricht gegen eine fertige Unit?
Dass ich das blos zur Übung und zum Verständnis des Algorithmus mache - da würde eine Fertigunit glaube ich nicht sonderlich weiterhelfen...


Zitat:
Delphi-Quellcode:
function ZustandZuBits(Anzahl:integer):integer;
var bits:real;
begin
  bits:=ln(Anzahl) / ln(2);
  Result:=trunc(bits);
  if Result < bits then
    inc(Result);
end;
Das werd ich mal probieren, danke
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: MD5 Länge einfügen als 64 Bit?

  Alt 27. Feb 2009, 15:20
Gut gut, das mit den Bits und Bytes hab ich nun verstanden und funktioniert
Aber wie hänge ich jetzt die Länge als 64-Bit-LE-Int an?
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#6

Re: MD5 Länge einfügen als 64 Bit?

  Alt 27. Feb 2009, 15:33
Indem du die Längen-Variable nimmst und binär hinten dranrechnest.

Wie du das genau bei dir machen mußt wissen wir nicht, da wir nicht wissen wie dein Code aussieht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#7

Re: MD5 Länge einfügen als 64 Bit?

  Alt 27. Feb 2009, 20:20
Wie kommt ihr eigentlich auf 64bit?
Der MD5 braucht 128bit.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#8

Re: MD5 Länge einfügen als 64 Bit?

  Alt 27. Feb 2009, 22:46
64 > Int64 > die Länge der in dem MD5 verechneten Daten.

128 > der MD5-Wert
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: MD5 Länge einfügen als 64 Bit?

  Alt 28. Feb 2009, 23:43
Zitat von himitsu:
Indem du die Längen-Variable nimmst und binär hinten dranrechnest.

Wie du das genau bei dir machen mußt wissen wir nicht, da wir nicht wissen wie dein Code aussieht.
Das war das Stichwort, das ich gesucht habe! Danke
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#10

Re: MD5 Länge einfügen als 64 Bit?

  Alt 1. Mär 2009, 11:43
Wie sieht es denn bei dir inzwischen aus? (deine Code-Übersetzung)

hatte es selbst grad mal versucht und dachte erst " des rechnet doch falsch", verglichen mit einem der PHP-MD5-Generatoren im INet ...

Doch hatte ganz vergessen, daß Windows nicht Big-Endian ist, sondern Little-Endian und man daher das Ergebnis umdrehn muß, da die MD5-Strings in Big-Endian ausgegeben werden.
IntToHex, sowie Format+%x machen es zumindestens so ... man könnte aber auch BinToHex nutzen, dieses arbeitet "andersrum".

(mein Funktions-Rumpf und die Umwandlung von h0-h1-h2-h3 nach String, damit du dich in Ruhe auf die Berechnung konzentrieren kannst und nicht daran scheiterst, nur weil es falsch dargestellt wird)
Delphi-Quellcode:
Function MD5(message: AnsiString): AnsiString;
  Begin
    ...

    //var int digest := h0 append h1 append h2 append h3 //(Darstellung als little-endian)
    Result := Format('$%.2x%.2x%.2x%.2x %.2x%.2x%.2x%.2x %.2x%.2x%.2x%.2x %.2x%.2x%.2x%.2x',
      [h0 shr 0 and $ff, h0 shr 8 and $ff, h0 shr 16 and $ff, h0 shr 24 and $ff,
       h1 shr 0 and $ff, h1 shr 8 and $ff, h1 shr 16 and $ff, h1 shr 24 and $ff,
       h2 shr 0 and $ff, h2 shr 8 and $ff, h2 shr 16 and $ff, h2 shr 24 and $ff,
       h3 shr 0 and $ff, h3 shr 8 and $ff, h3 shr 16 and $ff, h3 shr 24 and $ff]);
  End;
nicht wundern ... String = AnsiString ... aber damit man es auch unter Delphi2009 testen kann, da dieses Unicode ist.


Da du ja lernen willst, würde ich dir allerdings empfehlen es dir erst anzugucken, wenn du es selbst geschafft hast, oder du nicht weiter kommst.
Aber bei Letzerem kannst'e uns ja gern fragen ... das Beispiel in Wikipedia geht also schonmal, daran kann's nicht scheitern

[add]
Der Code entspricht weitgehenst dem Aufbau von Wiki's Code-Vorlage und enthält keinerlei Optimierungen ... Optimierteres findet man z.B. in meiner "Klasse" Hier im Forum suchenThxMD5
Angehängte Dateien
Dateityp: zip projects_169.zip (3,2 KB, 11x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz