![]() |
AW: hagen reddman dec
Zitat:
Was immer es ist, auf jeden Fall nicht der MD5-Hash von 'abc'? Und schon gar nicht berechnet mit einer Deiner Code-Schnipsel. Außerdem: Durch Zahlen zählen erhält man klein MD5 Hash. Außerdem: Wieso wird neuerdings für RSA eine MD5 benötigt? Im übrigen finde ich Deine Reaktion etwas - na sagen wir - merkwürdig. Du hast offensichtlich wenig Ahnung, wie Du zu einem richtigen Hashdigest kommst, 'findest' ein md5.pas Unit, die aber nicht funktioniert, willst deshalb DEC benutzen, und ich soll mal irgendeine weitere dieser Obskuritäten testen? Was für ein Kraut rauchst Du eigentlich, um auf solche Ideen zu kommen? Jetzt speziell auf den letzten Teil. Willst Du damit sagen, daß Du keine Ahnung hast, wie man von 'abc' auf einen beliebigen String verallgemeinert? Dann laß bitte die Finger von MD5 und erst recht von RSA. |
AW: hagen reddman dec
Das hab ich nicht gesagt und ich rauche kein was auch immer.
RSA Decrypt the final MD5 hash (result goes in 'b') D679E4D420CF78D335DC9AD165F9D819 //b oder auch modul N base 16 format size 128 bits oder liege ich da falsch? Hier aus der md5.pas
Delphi-Quellcode:
und hier das andere
{ The MD5String function evaluates the MD5 hashsum for
a string. The S parameter specifies a string to evaluate hashsum } function MD5String(const S: string): TMD5Digest;
Delphi-Quellcode:
und meine function die ich verwenden wollte aber die nicht geht.
{ The MD5DigestToStr function converts the result of
a hashsum evaluation function into a string of hexadecimal digits } function MD5DigestToStr(const Digest: TMD5Digest): string;
Delphi-Quellcode:
function GetMD5(s: string): string;
Begin result := MD5DigestToStr(MD5String(s));//hier wird doch die md5 hashume in einen string umgewandelt oder liege ich da falsch? end; |
AW: hagen reddman dec
Guten Abend,
mit Deiner angehängten MD5.pas funktioniert der folgende Code ohne Murren.
Delphi-Quellcode:
Nachtrag:
uses
md5; procedure TForm1.Button1Click(Sender: TObject); begin edit2.Text := MD5DigestToStr(Md5String(Edit1.Text)); end; Meine Delphi Version: TDE 2006 Was ist denn Deine: >= 2009 -> String = Unicode String Grüße Klaus |
AW: hagen reddman dec
Meine delphi version ist delphi 7 lite full welche version das genau ist kann ich dir nicht sagen scheint eine gemodde version von delphi 7 second edition zu sein.
Genau deswegen verstehe ich nur bahnhof bei jedem anderen geht diese md5.pas nur bei mir nicht. Hab erst gedacht es läge an den vista api´s deswegen hab eine neuinstallation ohne diese api´s gemacht selber fehler. Rsa kann sehr woll md5 verwenden für C da ja Encrypt Cipher_text = M ^ E MOD N Decrypt Message text = C ^ D MOD N Oder hab ich das jetzt auch falsch verstanden? Wollte es so lösen :
Delphi-Quellcode:
aber wenn ich das verwende bekomme ich einen range check error.
function new_md5(s:string):string ;
var t:THash_MD5; begin t:=THash_MD5.Create; try t.Init; Result:=t.CalcBinary('s',TFormat_HEX); t.Done; finally t.Free; //hier wird THash_MD5 freigelassen. end; end;
Delphi-Quellcode:
if (s <> '') and (s[1] <> '$') then
|
AW: hagen reddman dec
Zitat:
Das ist doch aber völlig unerheblich ob C aus einem MD5 Hashherkommt oder erwürfelt wurde. Wenn es immer noch dieser Fehler ist, Zitat:
Delphi-Quellcode:
und Du verwendest (zumindest was Du bisher gezeigt hast) ja keine Streams.
function MD5Stream(const Stream: TStream): TMD5Digest;
Im übrigen habe ich schwere Sicherheitsbedenken bei Deinem Code: 128-Bit RSA ist viel viel zuwenig um sicher zu sein. Aber viel schlimmer ist die "Security by Obscurity" durch Deine Part1- bis Part5- Verwurschtelungen. Ist Dir eigentlich bewußt, daß allein Part1 höchsten 9 Bit Sicherheit erzeugt, wenn die 128 Eingangsbits zufällig sind, da Du 32 4-Bit-Werte summierst. Part2 bis Part5 werden diese 9 Bit Zufall noch weiter runterdrücken. |
AW: hagen reddman dec
Nein der fehler hat sich doch geändert hab ich oben verbessert aber ich lande an dieser stelle im code mit md5.pas wie gesagt warum auch immer da ich keine streams verwende wie du schon gesagt hast.
Das 128 zu wenig sind ist mir schon klar aber das ist nicht für eine software die ich schützen will. Sagt dir das word keygenme etwas besser gesagt in diesem falle tut_me. Ich hoffe das thema ist hier erlaubt wenn nicht tut es mir leid. |
AW: hagen reddman dec
Zitat:
|
AW: hagen reddman dec
Ich kenne mich schon mit dieser Materie aus nur halt auf dem wege des pachtens hab erst zwei keygens geschrieben beide waren aber ohne cryptos und dieser hier ist ja für mich zum lernen gedacht nicht für sonstige zwecke.
Wobei das eine kein richtiger keygen ist da die serial nicht random ist. Da ein echter keygen random serials ausgibt die aber immer gültig sind. Das mit dem kraut rauchen könnte man alls falsche unterstellung anzeigen nur so alls tip. Back to topic : Wenn ich dich auf sonstige art beleidigt habe tut es mir leid @gammatester |
AW: hagen reddman dec
Ok, ich gebe zu für einen unerfahrenen Delphientwickler ist die korrekte Benutzung der DEC THash Klassen bischen ungewohnt.
Alle .Calc???() Methoden der THash Klassen sind als Klassenmetoden deklariert. Dh. du benutzt
Delphi-Quellcode:
oder
WriteLn( THash_M5.CalcBinary('abc', TFormat_HEX) );
WriteLn( THash_SHA1.CalcFile('c:\test.txt', TFormat_MIME) );
Delphi-Quellcode:
In den obigen Beispielen wird per Einzeiler und mit Hilfe von Klassenmethoden alles in einem Rutsch berechnet, was die häufigste Anwendungen ist.
var
MyClass: THashClass; begin MyClass := THash_MD5; WriteLn( MyClass.CalcBinary(.....) ); end; Nur in den selteneren Fällen benutzt man die Hash Klassen im DEC auf die gewohnte und herkömliche Weise:
Delphi-Quellcode:
In diesem Beispiel sieht man die einschlägige Vorgehensweise mit der Erstellung einer Objektinstanz. Deweiteren benutzt man die Methode .Calc() mit typlosen Zeiger auf Datenbereiche und Angabe der zu berechneden Datenbytes.
var
Hash: TDECHash; Data: array[0..2] of Byte; begin Hash := THash_MD5.Create; try Hash.Init; Hash.Calc(Data[0], 1); Hash.Calc(Data[1], 2); Hash.Done; Result := Hash.DigestStr(TFormat_HEX); finally Hash.Free; end; end; Man benutzt dies so wenn man, wie oben im Bespiele gezeigt, über getrennte Daten/Speicherbereiche eine Berechnung durchführen muß so als wenn diese zusammenhanglosen Datenbereiche ein einziger Datenbereich wäre. Also Zb. wenn man komplexere Datenstruktren/Records in/aus Streams speichdert/lädt und im gleichen Atemzug auch einen Hash berechnen möchte. Die zweite Methode der Benutzung der Hashklassen ist also eher die Ausnahme und dient der Komnpatibilität und der Implementation besonderer Verfahren/Protokolle. Siehe dazu zB. die Medthoden .KDF?() und .MGF?() an die quasi dynmische Datenbereiche errechnen, diese mit den übergebenen Datenberechen verkettet und so eine Berechnung stückchenweise durchführen so als hätte man diese Daten in einem Datenbereich erstmal vorher berechnet. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz