Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   DEC 5.2 Encrypt -> PHP/JS etc. Decrypt (https://www.delphipraxis.net/207238-dec-5-2-encrypt-php-javascript-etc-decrypt.html)

rapante 5. Mär 2021 15:25

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)?

TurboMagic 5. Mär 2021 16:03

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

rapante 5. Mär 2021 16:26

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:
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;
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.

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

TurboMagic 6. Mär 2021 16:48

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

TurboMagic 6. Mär 2021 17:33

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...

TurboMagic 7. Mär 2021 09:18

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:

https://github.com/MHumm/DelphiEncry...ses/tag/V6.1.1

EdAdvokat 7. Mär 2021 14:43

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.

TurboMagic 7. Mär 2021 18:29

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

rapante 8. Mär 2021 11:19

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.

generic 8. Mär 2021 18:41

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.
https://www.php.net/manual/de/mcrypt.installation.php
> 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 20:01 Uhr.
Seite 1 von 2  1 2      

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