![]() |
DEC-Blowfish-kodierte Strings in .NET entschlüsseln
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:
Nun zu meinem Problem: Ich muss in .NET (genauer: in C#) diese Strings wieder entschlüsseln können.
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; Ich habe ![]() 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:
Bei Ausführung von Decrypt_CBC kommt die Exception "System.Exception: IV not set.".
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); } 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 |
AW: DEC-Blowfish-kodierte Strings in .NET entschlüsseln
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! |
AW: DEC-Blowfish-kodierte Strings in .NET entschlüsseln
Du muss zumindest den IV auf 0 setzen, sagt doch schon die Fehlermeldung. ;)
|
AW: DEC-Blowfish-kodierte Strings in .NET entschlüsseln
Um solche Algorithmen zu testen (generell und zwischen unterschiedlichen Systemen) testet man damit, was die eigentlich verarbeiten. Und verarbeitet werden hier Bytefolgen!
Klingt komisch, ist aber so. |
AW: DEC-Blowfish-kodierte Strings in .NET entschlüsseln
Danke für die Einführung ins "test driven development". :roll:
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 |
AW: DEC-Blowfish-kodierte Strings in .NET entschlüsseln
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 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