Wie kann ich in .NET Werte entschlüsseln, die mit pBewithmd5anddes in Java verschlüsselt wurden?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie kann ich in .NET Werte entschlüsseln, die mit pBewithmd5anddes in Java verschlüsselt wurden?

Post by Anonymous »

Wir migrieren Daten aus einer Legacy -Java -App in unsere neuere .NET -App. Die Java -App verfügt über ein MySQL -Backend und die .NET -App hat ein SQL -Server -Back -End. Wir haben den vollständigen Quellcode und Konfigurationsdateien für beide, aber keiner der Entwickler, die in der Java-App gearbeitet haben, ist noch beim Unternehmen, und wir müssen einige der Logik umgekehrt, um die Daten zu migrieren. Wir haben die meisten Daten in unseren Tests ordnungsgemäß. Es gibt jedoch eine Spalte mit verschlüsselten Werten, mit denen wir Probleme haben. Vielmehr scheint die Verschlüsselung automatisch innerhalb der ORM stattzugeben, die zum Zugriff auf die Daten (Winterschlaf) verwendet wird. Ich habe eine XML -Datei namens /entities/tableName.hbm.xml gefunden, von der ich halte, die Modelldefinition von Hibernate für die Spalte zu sein. Die relevanten Zeilen in der XML -Datei sind wie folgt: < /p>

Code: Select all



Beachten Sie, dass der Typ in der String -Crypt - ist. Die Definition für zingenEncrypted scheint in /entities/global/user.hbm.xml zu sein, wie folgt:

Code: Select all

stringEncrypter

Und dann scheinen die Einstellungen für StringenCryPter in /webapp/resources/spring/companyname-encryption.xml wie folgt zu sein (natürlich sanitiert):

Code: Select all




PASSWORD


PBEWithMD5AndDES








SALTSALTSALTSALTSALTSALTSALTSALTSALT





stringEncrypter






Ich denke, das sagt mir, dass die Spalte mit pBewithmd5anddes -Method-Verschlüsselung mit einem Kennwort mit Kennwort und einem Salz von Saltsaltsaltsaltsaltsaltsaltsalts verschlüsselt wird. Die Frage ist also Wie kann ich die Spaltenwerte in .NET ? Mit diesem habe ich Folgendes in .NET versucht: < /p>
string encryptedInput = "mG5bz6duwBL3jVCLKyI8Zw=="; // This is an encrypted value copied from MySQL Workbench
string saltString = "SALTSALTSALTSALTSALTSALTSALTSALTSALT";
string keyString = "PASSWORD";
byte[] saltBytes = new byte[saltString.Length * sizeof(char)];

System.Buffer.BlockCopy(saltString.ToCharArray(), 0, saltBytes, 0, saltBytes.Length);

PKCSKeyGenerator crypto = new PKCSKeyGenerator(
keyString, // key
saltBytes, // salt
13, 1); // Magic numbers. I don't really get 'em.
ICryptoTransform ct = crypto.Decryptor;

byte[] cipherBytes = Convert.FromBase64String(encryptedInput);
byte[] clearBytes = ct.TransformFinalBlock(cipherBytes, 0, cipherBytes.Length);
string clearString = Encoding.Unicode.GetString(clearBytes);
< /code>
Wenn ich das ausführe, bekomme ich: < /p>
CryptographicException: Bad Data
< /code>
Ich habe mich nach anderen Entschlüsselungsmethoden umgesehen, den Java -Code nach jedem anderen Code gescannt und mit den Parametern von PKCSkeyGenerator bastelt, und ich habe keine Fortschritte gemacht. Ich kann diese Verringerung einfach nicht zum Laufen bringen. Haben Sie Vorschläge? Vielen Dank im Voraus.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post