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
Seite 1 von 2  1 2      
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
172 Beiträge
 
Delphi 12 Athens
 
#1

DEC 5.2 Encrypt -> PHP/JS etc. Decrypt

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

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

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

  Alt 5. Mär 2021, 17: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
172 Beiträge
 
Delphi 12 Athens
 
#3

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

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

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

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

  Alt 6. Mär 2021, 17: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.960 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 6. Mär 2021, 18: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.960 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 7. Mär 2021, 10: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
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

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

  Alt 7. Mär 2021, 15: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
TurboMagic

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

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

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

Registriert seit: 3. Jun 2009
Ort: OPR
172 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 8. Mär 2021, 12:19
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.
Micha
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#10

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

  Alt 8. Mär 2021, 19:41
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?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:12 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