Autor |
Beitrag |
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mo 05.03.07 19:39
Hallo,
ich habe das Problem, dass ein kleines Webscript (PHP) Daten aus einer MySQL-Datenbank auslesen, verschlüsseln und dann an die Delphi Anwendung leiten soll die es aufrieft.
Der Haken bei der Sache ist die Verschlüsselung. Hierfür wollte ich Blowfish nehmen da es in der Delphi Anwendung vielfach verwendet wird. Ich habe auch für PHP einige Blowfish Algorithmen gefunden, nur leider scheint das was die mir als Verschlüsselung liefern nicht zu dem zu passen was die verwendete Delphi Kasse benötigt. Sprich, wenn ich im Web etwas verschlüssele kann ich es im Delphi nicht wieder entschlüsseln, was die Kommunikation doch erheblich erschwert.
Leider kenne ich mich mit den Verschüsselungsmetoden nicht gut genug aus um fest zu stellen woran es liegt.
Hat jemand von euch eine Idee? Oder kennt jemand von euch eine PHP/Delphi Script Kombination die definitiv miteinander harmoniert?
momentan sieht es bei mir so aus:
Quelltext 1: 2: 3: 4: 5:
| Zu verschlüsseln: Test Paswort: passwort
von PHP verschlüsselt: b7YK7CuzmhI= von Delphi Entschlüsselt: „ÒÛbvšžý |
Leider kann ich auf Server Seite nicht viel drehen, da dieses Script an mehrere Leute mit verschiedenen von mir nicht beeinflussbaren Web-Angeboten geliefert werden soll.
Gruß
Klabautermann
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 05.03.07 19:55
Sind die Daten, welche das PHP-Skript erhält, bevor es diese verschlüsselt, in irgendeiner Weise kodiert (z.B. UTF-8 )?
Wie kommen die verschlüsselten Daten vom PHP-Skript zum Delphiprogramm? Kann dabei eine Enkodierung erfolgen?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mo 05.03.07 20:32
Christian S. hat folgendes geschrieben: | Wie kommen die verschlüsselten Daten vom PHP-Skript zum Delphiprogramm? Kann dabei eine Enkodierung erfolgen? |
Das = am Ende des PHP-Verschlüsselten deutet für mich auf Base64 hin.
Kannst ja mal ein Base64Decode vorher machen, vielleicht geht es dann.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Klabautermann 
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mo 05.03.07 22:03
Hallo,
die Daten werden per HTTP übertragen und ja, die PHP-Verschlüsselung macht einen Base64Encode als letzten Schritt, allerdings weigert sich der Delphi Decripter auch Strings an zu nehmen die nicht Base64 sind, daher dachte ich, dies sein Bestandteil des Blowfish.
Gruß
Klabautermann
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mo 05.03.07 23:02
Was spricht denn dagegen, das bereits schon fertige HTTPS zu verwenden?
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Klabautermann 
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Di 06.03.07 00:27
Hi,
matze hat folgendes geschrieben: | Was spricht denn dagegen, das bereits schon fertige HTTPS zu verwenden? |
das wir nicht wissen welche Web Angebote der Kunde bei dem das Script laufen muss besitzt. Außer HTTP & PHP können wir da nichts vorraussetzen, auch nicht HTTPS  .
Gruß
Klabautermann
|
|
Klabautermann 
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mi 07.03.07 12:33
Hi, ich wollte mal einen kleinen zwischenbericht geben der eventuell zukünftigen usern mit ähnlichen Problemen helfen kann. Ich habe hier eine Delphi Verschlüsselungskomponente + ein PHP-Script gefunden, welche miteinander Harmonieren leider Basiert das PHP-Script auf mcrypt welches ich nicht Voraussetzen kann, aber jetzt muss ich nur noch die vorhandenen PHP-Scripte so hinbiegen, das sie das selbe Ergebnis liefern. Gruß Klabautermann
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mi 07.03.07 13:57
Zeig doch mal den Code her, mit dem du das bisher machst. Vielleicht kann man ja da was machen.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Klabautermann 
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mi 07.03.07 15:21
Hallo,
wie gesagt, ich habe auf PHP Seite mehere ausprobiert die interessanter weise unterschiedliche Ergebnisse liefern. BEi einigen kann man einen Vector angeben bei anderen nicht.
Ich hänge mal die Variante an dieses Posting, die mir am meisten zusagt. Hier findest du das Demo Programm von City in the Sky welches mit mcrypt Kompatibel ist. Die bisher verwendete Blowfish kann ich nciht rausgeben da ich nicht weiß wie es da mit den Lizenzen aussieht (der wurde vor meiner Zeit angeschafft) und ich verstehe ihn um erhlich zu sein auch nciht wirklich, daher würde ich lieber die City in the Sky variante zum laufen kriegen.
Gruß
Klabautermann
Einloggen, um Attachments anzusehen!
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mi 07.03.07 15:58
Naja, aber wenn das CityInTheSky Script etwas voraussetzt, was du nicht auf dem Server garantieren kannst, ist das ja hinfällig.
Hast du wie weiter oben erwähnt, schon mal versucht das alles vorher durch nen Base64 Encoder zu schicken oder mit utf8_decrypt (oder wie auch immer diese PHP Funktion heisst) zu behandeln?
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Klabautermann 
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mi 07.03.07 17:03
Hi,
hier mal ein Auszug aus dem oben angehängten Test-Script:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function DoCrypt() {
if (array_key_exists('methode', $GLOBALS['_REQUEST'])) { $crypt = new pcrypt(MODE_CBC, "BLOWFISH", $GLOBALS['_REQUEST']['passwort']); switch ($GLOBALS['_REQUEST']['methode']) { case 'Verschlüsseln': $ciphertext = base64_encode($crypt->encrypt($GLOBALS['_REQUEST']['tocrypt'])); break; case 'Entschlüsseln': $ciphertext = $crypt->decrypt($GLOBALS['_REQUEST']['tocrypt']); break; } // entscheidung ob ver oder Entschlüsselt werden soll } // es wurde ein Button gedrückt return $ciphertext; } // Do Crypt |
Diese Funktion wertet die Aufrufparameter aus und führt dann die Verschlüsselung durch. Das ergebnis wir dann Base 64 Kodiert. Wenn es nicht Base 64 Kodiert ist, dann nimmt der Delphi Decrypter den String gar nicht an.
Was ich nicht verstehe ist, warum mcrypt andere Werte liefert als andere Bibliotheken (welche auch noch keine 2 mal das gleiche Ergebnis ausspukten was aber bei vielen dran liegen mag, dass ich dort den Vektor nicht angeben kann.
Alles in allen ist das Thema doch ziemlich verwirrend für mich, weshalb ich ziemlich im Nebel stochere (und da ich momentan mal wieder Arbeit Parallel erledigen darf ist es schwer mich richtig drauf zu konzentrieren).
Gruß
Klabautermann
|
|