Autor Beitrag
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: 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:

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 05.03.07 20:32 
user profile iconChristian 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 06.03.07 00:27 
Hi,
user profile iconmatze 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 07.03.07 17:03 
Hi,

hier mal ein Auszug aus dem oben angehängten Test-Script:

ausblenden 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