Entwickler-Ecke
Internet / Netzwerk - Verschlüsseln in Delphi & PHP
Klabautermann - Mo 05.03.07 19:39
Titel: Verschlüsseln in Delphi & PHP
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. - 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?
Martok - 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.
Klabautermann - 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 - Mo 05.03.07 23:02
Was spricht denn dagegen, das bereits schon fertige HTTPS zu verwenden?
Klabautermann - 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 - 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 [
http://www.cityinthesky.co.uk/cryptography.html] 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 - 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.
Klabautermann - 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 [
http://www.cityinthesky.co.uk/files/PHPEncryption.zip] 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
matze - 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?
Klabautermann - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!