Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#4

Re: PHP in Pascal:mcrypt_ecb(MCRYPT_DES, $a, $b, MCRYPT_ENCR

  Alt 15. Jul 2008, 20:25
Hi walter_b!
Zitat von walter_b:
Wie sieht es mit der Benutzung von DEC aus? Muss ich mich da wirklich an das ganze Ding binden, indem ich es bei Uses angebe, oder kann ich einfach die paar wenigen entsprechenden Zeilen in mein Programm reinpasten? Oder gehört noch mehr als dies rein?
Nein, die paar Zeilen pasten geht sowieso nicht und sowas sollte man auch nicht tun, wenn man nicht versteht, was man kopiert. Diese sind ein Anwendungsbeispiel und würden so nicht compilieren.

Und ja, Du mußt die vollständige Unit einbinden. Verschlüsselung ist etwas komplexes - dies läßt sich nicht in einer Hand voll Zeilen durchführen. Aber zum Glück nimmt Dir das DEC die Arbeit ab.

Zitat von walter_b:
Ich habe da ein paar DES gefunden, weiss aber nicht, welches meiner Vorstellung entspricht.
Weisst du zufälligerweise mehr darüber, welches ich benutzen muss?
Ich kann doch nicht hellsehen

Wenn ich bei mir die Unit DECCipher.pas öffne, steht dort aber etwas mehr:
Delphi-Quellcode:
TCipher_1DES = class; {Single DES  8 byte Blocksize,  8 byte Keysize  56 bits relevant}
TCipher_2DES = class; {Triple DES  8 byte Blocksize, 16 byte Keysize 112 bits relevant}
TCipher_3DES = class; {Triple DES  8 byte Blocksize, 24 byte Keysize 168 bits relevant}
TCipher_2DDES = class; {Triple DES 16 byte Blocksize, 16 byte Keysize 112 bits relevant}
TCipher_3DDES = class; {Triple DES 16 byte Blocksize, 24 byte Keysize 168 bits relevant}
TCipher_3TDES = class; {Triple DES 24 byte Blocksize, 24 byte Keysize 168 bits relevant}
Wie mcrypt zu benutzen ist, steht ja unter http://de3.php.net/mcrypt_ecb. Also gehe ich davon aus - ohne mcrypt zu kennen - es handelt sich um einen einfachen DES Cipher und kein Triple DES. Zusätzlich schließe ich aus Deinen Parametern für mcrypt, daß Du libmcrypt 2.2.x verwendest.

Das ganze ist unter der PHP Infoseite zusätzlich als "deprecated" gekennzeichnet, also sollte es so nicht mehr gemacht werden...

Auf jeden Fall wäre der Cipher hier also TCipher_1DES. Zusätzlich verwendest Du mcrypt ohne IV Initialisierungsvektor (das ist schonmal nicht so gut) - hier wäre also der IV leer.

Wegen Deines mcrypt Aufrufs suchst Du Dir also aus dem TCipherMode einen mit ECB heraus:
TCipherMode = (cmCTSx, cmCBCx, cmCFB8, cmCFBx, cmOFB8, cmOFBx, cmCFS8, cmCFSx, cmECBx); Das führt zu etwas wie:
Delphi-Quellcode:
function DecodeText(Inputtext, Key: String): String;
begin
  with TCipher_1DES.Create do
  try
    Mode := cmECBx;
    Init(Key);
    Result := EncodeBinary(Inputtext, TFormat_HEXL);
  finally
    Free;
  end;
end;
Das ganze ist nur aus dem Kopf und nicht geprüft! Es kann sein, daß Du etwas anderes als TFormat_HEXL verwenden mußt...

Jetzt habe ich ja doch Deine Arbeit gemacht
Naja, es ist ja Dein Einstand hier und mal sehen, was noch so kommt von Deiner Seite.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat