AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein DEC 5.2 Encrypt -> PHP/JS etc. Decrypt
Thema durchsuchen
Ansicht
Themen-Optionen

DEC 5.2 Encrypt -> PHP/JS etc. Decrypt

Ein Thema von rapante · begonnen am 5. Mär 2021 · letzter Beitrag vom 10. Mär 2021
Antwort Antwort
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
171 Beiträge
 
Delphi XE2 Professional
 
#1

DEC 5.2 Encrypt -> PHP/JS etc. Decrypt

  Alt 5. Mär 2021, 15:25
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)?
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.838 Beiträge
 
Delphi 12 Athens
 
#2

AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt

  Alt 5. Mär 2021, 16:03
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
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...
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
171 Beiträge
 
Delphi XE2 Professional
 
#3

AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt

  Alt 5. Mär 2021, 16:26
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
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.838 Beiträge
 
Delphi 12 Athens
 
#4

AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt

  Alt 6. Mär 2021, 16:48
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
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.838 Beiträge
 
Delphi 12 Athens
 
#5

AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt

  Alt 6. Mär 2021, 17:33
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...
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.838 Beiträge
 
Delphi 12 Athens
 
#6

AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt

  Alt 7. Mär 2021, 09:18
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
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
415 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt

  Alt 7. Mär 2021, 14:43
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.
Norbert
  Mit Zitat antworten Zitat
jus

Registriert seit: 22. Jan 2005
343 Beiträge
 
Delphi 2007 Professional
 
#8

AW: DEC 5.2 Encrypt -> PHP/JS etc. Decrypt

  Alt 8. Mär 2021, 20:27
@rapante:

Hast du dir den älteren Beitrag Delphi DEC Rijndael/AES zu PHP mcrypt angeschaut? Der Code lief unter Delphi2007 in Verbindung mit DEC 5.2. Bei mir hatte es damals funktioniert, dass ich zuerst mit DEC verschlüsselt und dann mit PHP wieder entschlüsselt habe. Ist zwar schon eine Weile her, aber soweit ich mich errinnern konnte mußte man beim Padding aufpassen. Sprich die Nachrichtengrösse sollte immer ein vielfaches von 16Byte betragen, damit DEC den selben Output wie PHP erzeugt.

lg,
jus
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:13 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