Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String verschlüsseln in PHP (https://www.delphipraxis.net/176204-string-verschluesseln-php.html)

junky 19. Aug 2013 15:13

String verschlüsseln in PHP
 
hallo, ich habe im internet eine funktion gefunden wie man in php einen string entschlüsseln kann (stackoverflow.com/questions/14995052/how-to-sync-encryption-between-delphi-and-php-using-dcpcrypt).
leider habe ich kein beispiel gefunden wie man denn einen string verschlüsseln kann. ich bekomme das selbst leider nicht hin dass ein string verschlüsselt wird. kann mir wer helfen?

DeddyH 19. Aug 2013 15:20

AW: String verschlüsseln in PHP
 
Im PHP-Script steht
Code:
mcrypt_decrypt
, das Gegenstück dürfte demnach vermutlich
Code:
mcrypt_encrypt
heißen. Eine kurze Google-Suche führt einen dann z.B. hierhin.

junky 19. Aug 2013 15:24

AW: String verschlüsseln in PHP
 
wenn ich folgende zwei zeilen abändere kommt leider ein anderers ergebnis heraus as das gewünschte.

leider bin ich eine niete in php und kenne mich da nicht aus:

Code:
function encrypt_SO($str, $key) {
    //$ivsize = mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_CBC);
    //$blocksize = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC);
    $keysize = mcrypt_get_key_size(MCRYPT_DES, MCRYPT_MODE_CBC);

    // Need to use the SAME IV as the Delphi function. By default
    // this is (0,0,0,0,0,0,0,0) encrypted using ECB mode and gives the
    // following bytes:
    $ivbytes = array(72, 163, 99, 62, 219, 111, 163, 114);
    $iv = implode(array_map("chr", $ivbytes));

    $enc = base64_encode($str);                                                                      // aenderung hier: _ENcode
    $k = mhash(MHASH_SHA1, $key);
    $dec = mcrypt_encrypt(MCRYPT_DES, substr($k, 0, $keysize), $enc, MCRYPT_MODE_CBC, $iv);          // aenderung hier: _ENcrypt

    $pad = ord($dec[strlen($dec) - 1]);
    return substr($dec, 0, strlen($dec) - $pad);
  }
 
  $dec = 'this is a test';
  $enc = encrypt_SO($dec, 'test');
  echo "$enc\n";

DeddyH 19. Aug 2013 15:27

AW: String verschlüsseln in PHP
 
Ich kenne mich mit mcrypt auch nicht aus, aber auf der verlinkten Seite stehen doch Beispiele. Hast Du es damit mal versucht?

junky 19. Aug 2013 15:34

AW: String verschlüsseln in PHP
 
das habe ich. folgenden code habe ich bisher. das ergebnis ist aber leider noch nicht richtig.

Code:
function encrypt_SO($str, $key) {
    $keysize = mcrypt_get_key_size(MCRYPT_DES, MCRYPT_MODE_CBC);
   
    $ivbytes = array(72, 163, 99, 62, 219, 111, 163, 114);
    $iv = implode(array_map("chr", $ivbytes));

    $k = mhash(MHASH_SHA1, $key);
    $dec = mcrypt_encrypt(MCRYPT_DES, substr($k, 0, $keysize), $str, MCRYPT_MODE_CBC, $iv);
   
    return base64_encode($dec);
  }
Es funktioniert nun fast.
das ergebnis welche ich brauche ist
WRaG/8xlxqqcTAJ5UAk4DA==
ich habe bisher aber nur
WRaG/8xlxqouYZoyvnidXg==

DeddyH 19. Aug 2013 15:50

AW: String verschlüsseln in PHP
 
Hier sind meine bescheidenen Kenntnisse leider auch am Ende :(

junky 19. Aug 2013 15:53

AW: String verschlüsseln in PHP
 
kein problem =)
"negaH" scheint mir ein genie in sachen kryptographie zu sein. ich hoffe er liest diesen beitrag.

Valle 19. Aug 2013 21:09

AW: String verschlüsseln in PHP
 
Hallo,

sehe ich das richtig, dass du die PHP-Funktion aus dem verlinkten StackOverflow-Thread haben willst, nur rückwärts?

Zu deinem ersten Versuch: du musst nicht nur En- und Decrypt umtauschen, sondern auch die Reihenfolge der Operationen. Also erst das DES-Encrypt und dann base64-Encode. Den gleichen Vorgang eben rückwärts.

Bei deinem zweiten Beispiel sieht man deutlich, dass die Strings sich nicht komplett unterscheiden. Ich vermute, hier wird was mit dem Padding nicht stimmen.

Liebe Grüße,
Valentin

junky 19. Aug 2013 22:20

AW: String verschlüsseln in PHP
 
ok. das ist erledigt.
im zweiten beispiel wird erst mcrypt_encrypt und dann base64_encode am ende aufgerufen.

was ist denn das padding? ist das die iv-byte reihenfolge?

junky 19. Aug 2013 23:26

AW: String verschlüsseln in PHP
 
ich habe nun herausgefunden, dass wenn ich beide werte (WRaG/8xlxqqcTAJ5UAk4DA== und WRaG/8xlxqouYZoyvnidXg==) entschlüssle, der selbe wert am ende herauskommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 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