![]() |
DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
Hallo zusammen,
die Herausforderung: Einen String mit DEC 5.2 verschlüsseln, per URL Parameter übergeben und dann auf dem Webserver wieder entschlüsseln. Kurz vorweg: Mein Verständnis der Zusammenhänge ist hier recht begrenzt. Ich nutze in meinen Projekten DEC 5.2 und habe mich bisher an die mitgelieferten Beispiele gehalten. Delphi-intern funktioniert das auch prima. Ich scheitere nun aber daran eine Serverseitige Entschlüsselung zu erstellen. Generell habe ich viele Beispiele gefunden wie ich auf dem Server Strings ver-und entschlüsseln kann (mcrypt, crypto.js etc.). Ich bekomme die DEC und die Aussenwelt aber einfach nicht auf einen Nenner. Hat jemand ein einfaches Beispiel wie ich das bewerkstelligen kann (für beide Seiten)? |
AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
Hallo,
naja, es müssen halt alle Verschlüsselungsparameter auf Sender und Empfängerseite zusammen passen. Da wären dann also die Fragen zu klären wie: 1. Benutzter Algorithmus 2. Benutzer Schlüssel 3. Benutzter Blockverkettungsalgorithmus 4. Benutztes Füllbyte 5. Benutzte Datenstruktur/Format: möglichst eben nicht String da es doprt ANSI vs. Unicode Unterschiede geben kann, evtl. besser in Hex konvertieren usw. Ich wollte auch schon DEC 6.1 empfehlen, da modernet, habe aber gerade von jemandem mitgeteilt bekommen, dass ich in DEC 6.x eine Array Initialisierungsmethode benutzt habe, die erst ab XE7 in Delphi verfügbar ist. Das muss ich wohl mal anpassen. Die Alternaitve wäre natürlich die einfachere: XE7 als Mindestvoraussetzung zu definieren :-D Aber das will ich eigentlich nicht. Nur hab' ich halt kein so altes Delphi mehr installiert. => könnte in ein paar Tagen Tester für meine Anpassung brauchen... :-D |
AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
Hy TurboMagic,
leider ist mein Verständnis der Thematik nicht sehr ausgeprägt. Ich benutze die folgende Funktion zum verschlüsseln:
Delphi-Quellcode:
Wenn ich das richtig verstanden habe, gibt es keine Entsprechung von KDFx in anderen Libs (Crypto.js) und ich weiß nicht wie ich das umsetzen kann.
function Encrypt(const AText: String; const APassword: String): String; overload;
var ASalt: Binary; AData: Binary; APass: Binary; begin with ValidCipher(TCipher_Rijndael).Create, Context do try ASalt := RandomBinary(16); APass := ValidHash(THash_Whirlpool).KDFx(APassword[1], Length(APassword) * SizeOf(APassword[1]), ASalt[1], Length(ASalt), KeySize, TFormat_Copy, 1); Mode := cmCBCx; Init(APass); SetLength(AData, Length(AText) * SizeOf(AText[1])); Encode(AText[1], AData[1], Length(AData)); Result := ValidFormat(TFormat_Mime64).Encode(ASalt + AData + CalcMAC); finally Free; ProtectBinary(ASalt); ProtectBinary(AData); ProtectBinary(APass); end; end; Leider ist das Problem ein uneingeplanter Nebenschauplatz meines eigentlichen Projektes. Daher ist meine Hoffnung, dass ich das Rad nicht neu erfinden muss und mir jemand mit einem funktionierenden Codeschnipsel behilflich sein kann... Welcher Algorithmus/Parameter verwendet werden ist im Prinzip egal. Es gibt keine Vorgaben. Nur Klartext darf es nicht sein ;) Wenn 6.1 "gefixt" ist, kann ich das gerne bei mir testen |
AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
Hallo,
1. KDF sind ja Key Deviation Functions, also Ableitung eines gehashten Schlüssels aus einem anderen, damit man aus einem Masterschlüssel mehrere generieren kann. 2. Die KDF2 Umsetzung in DEC 5.2 stellte sich während der DEC 6.0 Entwicklung als KDF1 heraus! Die hat nämlich keine KDF2 sondern KDF1 Tests bestanden. Da ich dann aber gelernt habe, dass KDF1-3 alle nur minimale Unterschiede im Code aufweisen, habe ich in DEC 6.0 alle 3 Varianten umgesetzt. Falls du das wirklich brauchst findest du es also evtl. als KDF1, 2 oder 3 in den anderen Bibliotheken. 3. Das wäre ein Grund mehr die gefixte 6.1 zu benutzen. 4. In DEC 6.0 wurde auch die neueste Fassung des Whirlpool Hash Algorithmus hinzugefügt und bestehende umbenannt (da gibt's aber glaube ich einen Compilerschalter um die alte Namensgebung zu behalten...). Naja, ab DEC 6.0 gibt's auch eine PDF Doku!!! Da steht sowas dann drinn. 5. Die Frage ist aber, ob ein KDF für deine Zwecke wirklich benötigt wird 6. Ein Fix für die Compilierung unter < XE7 ist quasi schon in Arbeit. Grüße TurboMagic |
AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
EIn potentieller Fix ist im Development Branch jetzt drin, sollte jetzt unter XE5 compilieren.
Da ich den Pull Request aber nicht 1:1 umsetzen wollte, hab ich den Autor des Requests gebeten meine Umsetzung nochmal kurz zu testen. Ist der erfolgreich gibt's wohl eine 6.1.1 version... |
AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
DEC 6.1.1 ist jetzt offiziell veröffentlicht.
Die einzige Änderung ist, dass es jetzt auch unter D2009-XE6 compilieren sollte. Hier liegt das Release: ![]() |
AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
Vielen Dank für die neue Version des DEC-Projektes 6.1.1!
Ist eventuell auch vorgesehen, eine VCL-Version von Cipher_FMX bzw. Hash_FMX den Demos beizufügen? Das wäre durchaus wünschenswert, denn so einfach das Projekt von FMX zu VCL umzugestalten ist es nicht. Es würde das DEC-Projekt attraktiver machen, so glaube ich. |
AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
Ich wüsste nicht was an einer Übertragung so schwierig
wäre. Es werden ja nur Standard Controls benutzt: TButton TEdit TCheckbox TCombobox TLabel und das halt in eine Vertikale Scrollbox gepackt, damit es als mobile App funktioniert. Eine andere Anordnung unter Windows ist ja kein Problem. Eine Konvertierung wäre in < 10 min. fertig... Ich würde meine Zeit lieber in die Umsetzung neuer Algorithmen investieren. Grüße TurboMagic |
AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
Moin,
ich habe diverse Probleme bei der Benutzung der aktuellen Version unter XE2: 1. In den .inc Dateien wird "$ENDIF" nicht erkannt. Es muss hier "$IFEND" heißen. 2. Die Funktion AutomaticDecrement (DECUtilRawByteStringHelper.pas) gibt es in XE2 noh nicht. 3. String/Integer-Klassen Funktionen gibt es noch nicht (String.irgendwas, Integer.tostring) 4. DECUtil.pas: Low(Buffer) -> Low kann nicht auf lange Stringtypen angewendet werden. Beim letzten Punkt hänge ich gerade noch. |
AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
Turbo, du kannst mich ruhig verraten.
Ich glaube auf meinen Laptop ist sogar ein XE2 drauf. Ich schau da nachher mal. Interessantes Thema, da ich die DEC sowieso weiter vorstellen möchte. Ich kann mir vorstellen zu versuchen, dass Thema in das 15 Minuten Format von meinen Kanal zu pressen. Das ist meistens das schwierigste zwischen 10-15 Minuten zu bleiben. Längere Videos schaut sich kaum einer an. Mit AES was verschlüsseln, was dann via ASCII (URL-encodierbar) z.B. mit BASE64 übertragen werden kann. Ich muss mal schauen, was auf PHP Seite damit kompatibel sein kann. Ich hab ewig kein PHP mehr gemacht. Die MCrypt ist deprecated. ![]() > Diese Erweiterung wurde ins » PECL-Repositorium verschoben und ist nicht mehr Teil von PHP ab PHP 7.2.0 Ich hoffe, dass die LibSodium was schönes bietet. ! Keine Garantie das es ein Video wird ! rapante hast du schon irgendwas auf der PHP-Seite? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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 by Thomas Breitkreuz