AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign DEC-Blowfish-kodierte Strings in .NET entschlüsseln
Thema durchsuchen
Ansicht
Themen-Optionen

DEC-Blowfish-kodierte Strings in .NET entschlüsseln

Ein Thema von Udontknow · begonnen am 21. Jan 2015 · letzter Beitrag vom 19. Feb 2015
Antwort Antwort
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#1

DEC-Blowfish-kodierte Strings in .NET entschlüsseln

  Alt 21. Jan 2015, 09:07
Hallo zusammen,

ich habe folgendes Problem, an dem ich mir die Zähne ausbeisse:

Ich habe diverse Strings (Win1252, unsere Default-Page bei allen Rechnern) vorliegen, die durch Delphi-Programme unter Zuhilfenahme der Cipher_Blowfish-Klasse aus dem DEC 5.2 von Hagen Reddmann verschlüsselt wurden.

Hier der Code für die Verschlüsselung (bin mir ehrlich gesagt noch nicht mal sicher, ob der so vollständig richtig ist, da Init nicht aufgerufen wird, aber zumindest lassen sich diese Strings in Delphi auch wieder entschlüsseln). PW ist ein bekannter interner String, der immer gleich bleibt.

Delphi-Quellcode:
function BlowFishEncode(DecodedStr:String):String;
var Cipher:TCipher_Blowfish;
begin
  Cipher:=TCipher_Blowfish.Create(PW,NIL);
  try
     Result:=Cipher.CodeString(DecodedStr,paEncode,fmtHEX);
  finally
     Cipher.Free;
  end;
end;
Nun zu meinem Problem: Ich muss in .NET (genauer: in C#) diese Strings wieder entschlüsseln können.

Ich habe hier eine Blowfish-Implementation heruntergeladen, scheitere aber bei der Ausführung.

Folgender Code für die Nutzung (String2Hex wandelt meinen regulären Ansistring PW in Hex um,denn der Konstruktorparameter fordert eine Hex-Repräsentation):

Code:
public static string String2Hex(string stringToConvert)
      {
         var sb = new StringBuilder();
         foreach (char t in stringToConvert)
         {
            sb.Append(Convert.ToInt32(t).ToString("x"));
         }
         return sb.ToString();
      }
     
     
      public string Decrypt(string encryptedText)
      {
         var array = Encoding.Default.GetBytes(encryptedText);
         var fish = new BlowFish(String2Hex(PW));
         
         var decrypted = fish.Decrypt_CBC(array);
         return Encoding.Default.GetString(decrypted);
      }
Bei Ausführung von Decrypt_CBC kommt die Exception "System.Exception: IV not set.".

Hier bin ich nun schon ein wenig verwirrt. Dieser "Initialization Vector" wurde in Delphi nicht direkt gesetzt. Was müsste ich hier angeben?

Wenn ich mir den DEC-Code so grob ansehe, wird offensichtlich im DEC auch ein RipeMD256-Hash vom beim Constructor übergebenen Key (bei mir PW) errechnet, der dann irgendwie in die Verschlüsselung einfliesst. Müsste dann nun nicht auch die C#-Variante RipeMD256 an irgendeiner Stelle verwenden?

Vielen Dank im voraus

Andreas

Geändert von Udontknow (21. Jan 2015 um 14:55 Uhr) Grund: DEC-Versionsangabe korrigiert
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#2

AW: DEC-Blowfish-kodierte Strings in .NET entschlüsseln

  Alt 6. Feb 2015, 15:36
Ich hab´s aufgegeben, habe nun den Algo konvertiert auf Rijndael, da habe ich geprüft, dass der sowohl in Delphi als auch in .NET funktioniert und kompatibel untereinander ist...

Happy WE!
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#3

AW: DEC-Blowfish-kodierte Strings in .NET entschlüsseln

  Alt 6. Feb 2015, 16:27
Du muss zumindest den IV auf 0 setzen, sagt doch schon die Fehlermeldung.
Gruß
Cookie
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: DEC-Blowfish-kodierte Strings in .NET entschlüsseln

  Alt 6. Feb 2015, 17:07
Um solche Algorithmen zu testen (generell und zwischen unterschiedlichen Systemen) testet man damit, was die eigentlich verarbeiten. Und verarbeitet werden hier Bytefolgen!
  1. Daten im Quellsystem in eine Bytefolge schreiben und versuchen aus dieser Bytefolge auf dem Zielsystem wieder die gleichen Daten herauszulesen
  2. Bytefolgen auf dem Quellsystem durch den Algorithmus schieben und auf dem Zielsystem wieder durch den Algorithmus und nun vergleichen, ob es wieder die Ursprungs-Bytefolge ist
Hat diese beiden klitzekleinen aber immanent wichtigen Schritte abgearbeitet, dann steht einer erfolgreichen String-durch-Algorithmus-auf-Sonstwas-Zielsystem-schieben nichts mehr im Weg.

Klingt komisch, ist aber so.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#5

AW: DEC-Blowfish-kodierte Strings in .NET entschlüsseln

  Alt 19. Feb 2015, 18:27
Danke für die Einführung ins "test driven development".

Geholfen hätten deine (zu) allgemeinen Ausführungen nicht wirklich, ich hatte schliesslich ein spezifisches Problem mit der DEC-Implementierung von Blowfish. Klingt komisch, ist aber so.

Egal, mit Rijndael bin ich nun glücklich geworden, das klappt in jede Richtung.

Viele Grüße
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#6

AW: DEC-Blowfish-kodierte Strings in .NET entschlüsseln

  Alt 19. Feb 2015, 19:24
Danke für die Einführung ins "test driven development".

Geholfen hätten deine (zu) allgemeinen Ausführungen nicht wirklich, ich hatte schliesslich ein spezifisches Problem mit der DEC-Implementierung von Blowfish. Klingt komisch, ist aber so.

Egal, mit Rijndael bin ich nun glücklich geworden, das klappt in jede Richtung.

Viele Grüße
Da Blowfish outdatet ist, fahrst du mit Rijndael eh besser.
Gruß
Cookie
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 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