AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Da wäre es langsam interessant, eine existierende OpenSource lib die weit verbreitet ist, via wrapper für delphi zur verfügung zu stellen.
Z.B. libgcrypt o.ä. Ist lgpl, sollte also auch in proprietärer Software einsetzbar sein. Viele c/c++ OS Projekte sind up-to-date, häufig eingesetzt, gut geprüft etc. Soweit ich weiß ist es doch relativ unkompliziert eine .dll oder .so via wrapper aus delphi heraus anzusprechen. Damit würde man sich das regelmäßige neuentwickeln sparen, man müsste "nur" die api immer aktuell halten. Ok, es ist kein PurePascal, aber sicherlich doch eine alternative Lösung zu unseren Problemen hier. Gibt es da vielleicht schon was? Lg |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Ich habe in der Zwischenzeit die meisten Anpassungen selbst durchgeführt, zumindest für die Teile, die ich benötige.
Eine zusätzliche DLL wäre zwar kein echtes Problem, möchte ich aber eigentlich nicht. |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Hallo zusammen,
darf man fragen ob das Projekt Dec 6.0 noch weiter verfolgt wird? Wäre schon toll und war doch schon bald fertig, oder? Ich habe mir auch mal die Kryptoroutinen von gammatester angesehen aber hätte da schon so meine Probleme um die von mir verwendeten DEC-Funktionen umzusetzen. Sowas zum Beispiel:
Delphi-Quellcode:
Weiß jemand was die Entsprechung mit den gammatester-Kryptoroutinen wäre? Geht das damit?
function EncryptString(const Password: RawByteString; const Value: RawByteString): RawByteString;
var Salt, SessionKey: Binary; begin Salt := RandomBinary(16); with TCipher_Rijndael.Create do try SessionKey := THash_SHA1.KDFx(Password, Salt, Context.KeySize, TFormat_Copy); mode := cmCFS8; Init(SessionKey); Result := TFormat_MIME64.Encode(Salt + EncodeBinary(Value, TFormat_Copy)); finally Free; ProtectBinary(Salt); ProtectBinary(SessionKey); end; end; Grüße, Uwe |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Also auf DEC hoffe ich nicht mehr. Ich habe das System von Gammatester erfolgreich umgestellt.
Das, was Du möchtest, sollte auch (irgendwie) funktionieren. Ich muß bei mir gucken, Moment. |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
So habe ich das gemacht. Das ist anscheinend von mir aus einem Beispiel von ihm zusammengestrickt :
Delphi-Quellcode:
function Encrypt(const AText: string; const APassword: string): string;
{ -Encrypt file InName to OutName using password } // http://www.wolfgang-ehrhardt.de/crypt_en.html const bufSize = $C000; var N : word; len : int64; hdr : TFCA256Hdr; cxe : TAES_EAXContext; auth : TFCA256_AuthBlock; TextOut, TextIn: TStringStream; buf : array [0 .. bufSize - 1] of Byte; begin randomize; TextIn := TStringStream.Create(AText); TextOut := TStringStream.Create; try len := TextIn.Size; GetSalt(hdr.salt); if FCA_EAX256_initS(cxe, APassword, hdr) <> 0 then raise Exception.Create('Fehler'); TextOut.WriteBuffer(hdr, SizeOf(hdr)); while len > 0 do begin if len > SizeOf(buf) then N := SizeOf(buf) else N := len; TextIn.ReadBuffer(buf, N); dec(len, N); if FCA_EAX256_encrypt(cxe, buf, N) <> 0 then raise Exception.Create('Fehler'); TextOut.WriteBuffer(buf, N); end; FCA_EAX256_final(cxe, auth); TextOut.WriteBuffer(auth, SizeOf(auth)); Result := Base64EncStr(TextOut.DataString); finally TextOut.Free; TextIn.Free; end; end; function Decrypt(const AText: string; const APassword: string): string; { -Decrypt file InName to OutName using password sPW } // http://www.wolfgang-ehrhardt.de/crypt_en.html const bufSize = $C000; var N : word; I, len : longint; hdrk : TFCA256Hdr; hdrf : TFCA256Hdr; cxe : TAES_EAXContext; cxh : TFCA_HMAC256_Context; authf : TFCA256_AuthBlock; authc : TFCA256_AuthBlock; UseEAX : boolean; TextOut, TextIn: TStringStream; buf : array [0 .. bufSize - 1] of Byte; begin if AText = '' then Exit(''); TextIn := TStringStream.Create(Base64DecStr(AText)); TextOut := TStringStream.Create; try len := TextIn.Size - SizeOf(hdrf) - SizeOf(authf); TextIn.ReadBuffer(hdrf, SizeOf(hdrf)); if (hdrf.FCASig <> C_FCA_Sig) or (hdrf.Flags and $F0 <> $A0) then raise Exception.Create('Fehler'); if hdrf.Flags and $02 <> 0 then begin writeln(#7'*** Warning: Found zlib compression flag, use t_zlibex to inflate <outfile>'); end; if not(hdrf.Flags and $04 <> 0) then begin raise Exception.Create('Fehler'); end; hdrk := hdrf; UseEAX := odd(hdrf.Flags); if UseEAX then begin if FCA_EAX256_initS(cxe, APassword, hdrk) <> 0 then raise Exception.Create('Fehler'); end else begin if FCA_HMAC256_initS(cxh, APassword, hdrk) <> 0 then raise Exception.Create('Fehler'); end; if hdrf.PW_ver <> hdrk.PW_ver then raise Exception.Create('Fehler'); while len > 0 do begin if len > SizeOf(buf) then N := SizeOf(buf) else N := len; TextIn.ReadBuffer(buf, N); dec(len, N); if UseEAX then begin if FCA_EAX256_decrypt(cxe, buf, N) <> 0 then raise Exception.Create('Fehler'); end else begin if FCA_HMAC256_decrypt(cxh, buf, N) <> 0 then raise Exception.Create('Fehler'); end; TextOut.WriteBuffer(buf, N); end; if UseEAX then begin FCA_EAX256_final(cxe, authc); end else begin FCA_HMAC256_final(cxh, authc); end; TextIn.ReadBuffer(authf, SizeOf(authf)); for I := 0 to 15 do begin if authf[I] <> authc[I] then begin raise Exception.Create('Fehler'); end; end; Result := TextOut.DataString; finally TextOut.Free; TextIn.Free; end; end; |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Hallo Jens01,
vielen Dank. Werde ich mal ausprobieren. Schade, wenn das mit DEC nichts mehr werden sollte. Ist ja doch um Einiges einfacher anzuwenden... Grüße, Uwe |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Zitat:
Gammatester ist aber öfter mal hier im Forum. |
AW: 256 bit Integer Addition von ASM in PurePascal
Zitat:
Delphi-Quellcode:
Direktive einfügen.
{$asmmode intel}
Eine Anmerkung noch zu Calling Conventions: diese sind unter x86_64-win64 und x86_64-[alles andere] unterschiedlich. Letztere verwenden die Linux x86_64 ABI während nur Windows hier sein eigenes Süppchen kocht. Für FPC würde ich dennoch eine PurePascal Implementierung vorziehen, da es ja noch einige Plattformen mehr gibt (Achtung: auch mit unterschiedlicher Endianess!). Gruß, Sven |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Zitat:
Zitat:
|
AW: 256 bit Integer Addition von ASM in PurePascal
Zitat:
|
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Hallo gammatester,
Zitat:
Wie sieht's denn damit aus? Das ist zumindest auch unter (beispielsweise) PHP verwendbar...
Delphi-Quellcode:
Grüße,
function EncryptStringForPHP(Text, Password: RawByteString): RawByteString;
var Salt : Binary; begin Salt := RandomBinary(8); with TCipher_Blowfish.Create do try mode := cmCFB8; Init(Password, Salt, Context.KeySize); Result := TFormat_MIME64.Encode(Salt + EncodeBinary(Text, TFormat_Copy)); finally Free; ProtectBinary(Salt); ProtectBinary(Password); end; end; Uwe |
AW: 256 bit Integer Addition von ASM in PurePascal
Hallo Sven,
Zitat:
Oder anders gefragt: Wäre eine 64-Bit-Version für Delphi unter Windows machbar oder ist gar schon lauffähig? Also für den Moment wäre Vielen sicherlich schon mit einer DEC 5.9 geholfen, die mit Delphi unter 64-Bit so funktioniert, wie die DEC 5.2 unter 32-Bit, denke ich mal. Vielleicht sollte man ja erstmal diesen Teilschritt realisieren. Grüße, Uwe |
AW: 256 bit Integer Addition von ASM in PurePascal
Zitat:
2. war ja wohl Microsoft sehr stark an UEFI beteiligt, was man auch daran sehen kann, dass Portable Executable als Binärformat gewählt wurde... Zitat:
Zitat:
Gruß, Sven |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Zitat:
|
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Hallo gammatester,
Zitat:
Ich habe Dir mal 'ne PM geschickt. Grüße, Uwe |
AW: 256 bit Integer Addition von ASM in PurePascal
Zitat:
Gruß, Sven |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Ja, der Thread ist alt!
Ich habe nur eine Frage. Ich versuche gerade DEC 5.2 x64 zu kompilieren was natürlich schief geht. Ich habe bisher alles angepasst, was man hier in diesem Thread finden konnte. Aber leider ist die Unit DECUtil noch voll von nicht funktionierendem ASM-Code. Gibt es dafür eine Lösung bzw. gibt es eine schnelle DEC-Alternative? System.Hash ist mir zu lahm und Spring4D weiß ich leider nicht anzuwenden :pale: |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Habs lange nicht benutzt, aber LockBox war eigentlich super für solche Dinge, zumindest für mich ...
Warum benutzt du nicht das ? Rollo |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Wie installiert man LockBox denn nicht einmal das schaffe ich.
Sieht super umständlich aus finde ich. |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Wollen wir hier vielleicht noch einmal alles zusammentragen bezüglich der DEC? Ich habe z.B. die TypeInfoEx.pas auf 64 Bit angepasst mit dem Assembler. Eine Pure Pascal Implementation könnte man ansonsten ja vielleicht auch noch einmal erstellen. Besteht noch Interesse oder ist das eh tot? Gleiches gilt für die Fehler durch die DEC Assembler Routinen bei der Nutzung unter C++Builder.
|
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Ich habe das noch auf meiner Webseite: http://michael-puff.de/Programmierung/Delphi/DEC/
|
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Schade das es nicht weiterentwickelt wurde (DP Thread Vorschläge für Version 5.3) Da steht auch sehr oft sogar Planung einer Version 6 und 64bit Unterstützung.
Zu Windows XP Zeiten fand ich DEC echt gut. |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Dass es nicht weiterentwickelt wird stimmt gar nicht ;-)
Ich tue das doch. Siehe development Zweit in Assertor's repository. Wenn der jetzt mal endlich erreichbar wäre und mir das Repository ganz übertragen würde, dann gäb's wohl in absehbarer Zeit eine V6.0. Eine Liste der Änderungen von 5.2/5.3 nach 6.0 befindet sich in der Doku, die jetzt bei DEC auch dabei ist ganz am Ende. Es wäre allerdings hilfreich, wenn mir jemand noch den Zweck gewisser Dinge erläutern würde. Beispielsweise wozu sind diese gut: - TDECCipher: Fuser, FUserSave und FVector - TCipherContext.UserSave Und für nach 6.0 ist auch geplant neuere Algorithmen schrittweise umzusetzen. Es dürfen sich aber auch genre weitere Personen beteiligen! Ach ja, 2 FMX basierte Testprogramme gibt's auch in Google Play zum Download: DECHashDemo und DECCipherDemo. Grüße TurboMagic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 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