![]() |
[Perl][Delphi] Unterschiedliche Verschlüsselung (RC6)
Hallo Welt,
Ich möchte meine Daten, die in Delphi als Resourcen eingebunden sind, vor dem Kompilieren verschlüsseln und zur Laufzeit wieder entschlüsseln. Als Algorithmus habe ich RC6 gewählt, da dieser schon anderweitig im Projekt verwendet wird. Die Daten, die als Resourcen eingebunden werden, verschlüssle ich mit Perl (ActivePerl), mit dem Modul Crypt::RC6 von cpan:
Code:
Beide Dateien sind mit binmode geöffnet worden. Auf der Delphi-Seite verwende ich den RC6 aus der DEC Komponente:
#
# Create RC6 cipher $cipher = new Crypt::RC6 $password; # # Read data, encrypt them and write them back while ($readLen = read(CLEAR_FILE, $fileBuf, 16)) { if ($readLen < 16) { $fileBuf = pack("a16", $fileBuf); }; $encryptedData = $cipher->encrypt($fileBuf); print ENC_FILE $encryptedData; };
Delphi-Quellcode:
Das Problem: Ich kann die Daten in Delphi nicht mehr entschlüsseln. Überprüft habe ich:
decAlg := TCipher_RC6.Create();
try decAlg.Init(password); Result := decAlg.DecodeBinary(sText); finally decAlg.Free(); end; // try - finally
Was mache ich falsch, bzw. an welchen Stellen muss ich was ändern? Ist mein Padding in Perl falsch? Muss ich Delphi noch etwas setzen? Gruss SF |
Re: [Perl][Delphi] Unterschiedliche Verschlüsselung (RC6)
Zitat:
Delphi-Quellcode:
Gruss SF
decAlg := TCipher_RC6.Create();
try decAlg.Mode := cmECBx; decAlg.Init(password); Result := decAlg.DecodeBinary(sText); finally decAlg.Free(); end; // try - finally |
Re: [Perl][Delphi] Unterschiedliche Verschlüsselung (RC6)
Also wenn du den Ciphermode auf cmECBx stellst geht es ?
Das ist übel ! ECB=Electronic Code Book sollte bei einer Blockverschlüsselung niemals für Produktivdaten benutzt werden, soll heisen deine Verschlüsselung mit ECB sind unsicher. Ok, exakter formuliert: es existieren praktische Angriffsmöglichkeiten auf deine verschl. Daten, sogar einige, nur weil der falsche Modus gesetzt ist. Schau mal ob du PHP dazu bekommst im CBC Modus zu arbeiten, oder CFB wäre noch besser. Also irgendein Feedback Modus muß es sein. Dieser verknüpft die einzelenen Datenblöcke während der Verschlüsselungen untereinander. Angenommen deine Textdatei ist eine Banküberweisung. Du hast schonmal so eine Überweisung abgesendet in der du mir 1 Euro überwiesen hast. Ich habe nun diese verschlüsselte Banküberweisnd abgefangen, die verschlüsselte. Nun überweist du 10000 Euro an deinen Autodealer und ich habe ebenfalls diese Nachricht abgefangen. Bei bestimmten Dateiaufbau der Banküberweisung kann ich nun aus den beiden verschlüsselten Nachrichten eine neue verschlüsslte Nachricht zusammenbauen ohen sie überhaupt entschlüsseln zu müssen. Das wäre dann eine Banküberweisung von 10000 Euro auf mein Konto. Also, niemals ECB benutzen in einem Blockcipher. ECB-> Electronic Code Book, ist wie es der Name schon sagt nur ein Modus um Testvektoren zu erzeugen um die Arbeitsweise der Implementierung des Ciphers zu überprüfen. ECB lässt nur den reinen Cipher arbeiten ohne äußeren Feedbackmodus. Zwei Ausnahmen gibt es für ECB: 1.) man baut seinen eigenen äußeren Feedbackmodus drumherum 2.) die Daten die man verschlüsseln möchte bestehen aus purem Zufall, zb. Schlüsselaustausch Gruß Hagen |
Re: [Perl][Delphi] Unterschiedliche Verschlüsselung (RC6)
Zitat:
Eigentlich wollte ich das ja benutzen, damit ich die Sache nicht selbst implementieren muss :( Hat jemand einen Hinweis, wo ich etwas Dokumentation dazu finde? Danke. Gruss SF |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz