Ist möglich, dass ich hier jetzt totalen Mist schreibe, wenn es so ist, bitte drauf hinweisen.
Die Schlüsselerzeugung bzw. die Verschlüsselung sieht mir völlig unterschiedlich aus.
In der PHP Variante gibt es kein Gegenstück zur Key Derivation Function (KDFx). Dazu kommt noch, dass KDFx eine
Dec-Eigene Key Derivation Function ist. Die PHP Funktion errechnet einen zufälligen IV, deine Delphi Version tut dies nicht. Außerdem sehe ich in der PHP Version nicht, dass dort ein MAC irgendwo geschrieben wird. Als AHashClass ist THash_Whirlpool deklariert, bist du sicher, dass die PHP Funktion auch mit Whirlpool arbeitet? Außerdem musst du überprüfen, wo die Informationen (Salt, IV, Mac, möglicherweise Informationen zum Passwort (Hash oder ein Teil davon) ) in der verschlüsselten Datei gespeichert werden.
Aus diesen Gründen kann das gar nicht klappen.
Delphi-Quellcode:
function TDECCipher.CalcMAC(Format: TDECFormatClass): Binary;
begin
Done;
if FMode in [cmECBx] then raise EDECException.Create(sInvalidMACMode)
else Result := ValidFormat(Format).Encode(FBuffer^, FBufferSize);
end;
Wie du hier ja schon gesehen hast, kann das im ECB Mode gar nicht funktionieren. Muss es aber auch nicht, denn in deiner PHP Funtion wird ja auch gar kein MAC Wert errechnet.
Edit: Der ECB Modus ist nicht sonderlich sicher, deshalb sollte man lieber einen verketteten Modus wie CBC benutzen.
ECB Mode Wiki