Einzelnen Beitrag anzeigen

Benutzername12345

Registriert seit: 25. Jan 2016
3 Beiträge
 
#1

AES-Encryption zwischen Delphi und Rest der Welt

  Alt 25. Jan 2016, 11:10
Delphi-Version: XE
Hallo Delphi-Praxis-Community,

suche nun schon seit mehreren Stunden nach einer Lösung zu einem (meiner Meinung nach simplen) Problem, konnte bisher aber leider nichts finden und wende mich nun verzweifelt an euch

Eigentliches Ziel ist folgendes:
Wir arbeiten mit einem C#-Webservice der derzeit die Daten unverschlüsselt an die aufrufende Stelle zurückgibt. Da der Webservice allerdings nicht für die Öffentlichkeit bestimmt ist wollen wir diesen mit AES Rjindael verschlüsseln.
Mein Kollege hat schon irgendwo aus dem Internet eine Verschlüsselung kopiert. Diese kann zwischen C# Webservice und C# Anwendung kommunizieren. Da er selbst aber keine genaue Ahnung hat was da passiert, dachte ich, bevor ich die Verschlüsselung am Webservice nun anpasse, stelle ich sicher, dass Delphi erstmal irgendwas ver- und entschlüsselt, dass einem Allgemein kompatiblen Standard entspricht. Delphi ist aus Erfahrung immer etwas weniger flexibel, daher mein Gedanke: "Wenn ich was finde, bei dem es mit Delphi klappt, klappt das dann höchstwahrscheinlich auch in C#"

Also habe ich mir einen Online-Encrypter gesucht ( https://www.tools4noobs.com/online_tools/encrypt/ )
mit der Prämisse: In Delphi einen verschlüsselten String zu generieren, den ich dort nachstellen kann.

Habe nun bereits mehrere verschiedene Lösungen und Libraries durchprobiert und nutze derzeit DEC mit folgendem Code (vermutlich irgendwo von Stackoverflow kopiert)

Delphi-Quellcode:
function CCFDecrypt(const CCF: Binary; const Password: Binary): Binary;
begin
  with TCipher_Rijndael.Create do
    try
      Mode := cmCFB8;
      Init(Password, #0, $00);
      result := DecodeBinary(CCF, TFormat_MIME64);
    finally
      Free;
    end;
end;

function CCFEncrypt(const CCF: Binary; const Password: Binary): Binary;
begin
  with TCipher_Rijndael.Create do
    try
      Mode := cmCFB8;
      Init(Password, #0, $00);
      result := EncodeBinary(CCF, TFormat_MIME64);
    finally
      Free;
    end;
end;
dazu diesen Aufruf:
Delphi-Quellcode:
var
  Password, Data: Binary;
begin
  Password := 'asd';
  Data := CCFEncrypt('asd', Password);
  Data := CCFDecrypt(Data, Password);
Der verschlüsselte Text "asd" mit dem Password "asd" ergibt den String "htz5"
nun schaffe ich es aber nicht, auch nicht mit anderen Modes in Delphi, einen String zusammenzubauen den ich in dem Onlinetool genauso generieren kann.

Ich weiß nicht was ich falsch mache aber habe das Gefühl gehörig auf dem Schlauch zu stehen.

Grüße
  Mit Zitat antworten Zitat