2014-12-12 18 views
5

Ich habe eine Frage bezüglich der Verschlüsselung: im Grunde in meiner Webanwendung habe ich Enterprise Library 5.0 verwendet, wo sie einen Block für Kryptografie hatten, also grundsätzlich in dem von ihnen zur Verfügung gestellten Konfigurationstool registriert ein Block und generiert einen Schlüssel. Dies fügt grundsätzlich paar Zeilen in der Web-Config, so dass später in Web-Anwendung i folgendes tun:RijndaelManaged Encryption Ersetzung der Enterprise Library

Cryptographer.EncryptSymmetric("RijndaelManaged", text); 
Cryptographer.DecryptSymmetric("RijndaelManaged", text); 

Dies würde automatisch verschlüsseln und entschlüsseln korrekt, withouth alle Probleme.

Jetzt habe ich ein folgendes Problem, wir bewegen uns von Enterprise Library 5.0 zu Enterprise Library 6.0 und in der neuen Version haben sie den Kryptographie-Block entfernt und stattdessen empfehlen sie .Net Kryptografie zu verwenden.

Also entschied ich mich statt dessen, Rijndael .Net Klasse zu verwenden, um diese Zeilen durch benutzerdefinierten Code zu ersetzen. Ich habe dieses Thema als Referenz verwendet (Encrypt and decrypt a string) aber mit RijndaelManaged, um es zu erstellen, aber ich bin ein bisschen verwirrt, wie wäre es mit dem Schlüssel ... weil einige Daten bereits verschlüsselt sind, wie man den gleichen Schlüssel bekommt und benutzt fähig, die Daten zu entschlüsseln und zu benutzen ...?

Ich habe den Konfigurationsmanager der Version 5.0 geöffnet, um den Schlüssel zu sehen, aber kann ich ihn verwenden oder nicht?

Kann jemand mich auf diesem einen ausarbeiten?

+0

In EntLib5 wird der Schlüssel in einer Schlüsseldatei gespeichert, die durch DPAPI geschützt ist (Benutzer- oder Maschinenmodus). Sie müssten es einlesen und den Schutz mit 'ProtectedData.Unprotect() 'aufheben. Beachten Sie außerdem, dass die ersten 4 Zeichen in der Schlüsseldatei eine Versionsnummer und nicht Teil des Schlüssels sind. Abhängig von Ihrer App möchten Sie vielleicht über eine einmalige Migration nachdenken, die Sie mit Ihrem alten Schema entschlüsseln und dann mit dem neuen Ansatz verschlüsseln müssen (abhängig davon, wie ähnlich EntLib dem neuen Ansatz entspricht). –

+0

Sie können auch die EntLib 5-Quelle herunterladen, um zu sehen, was intern passiert: http: //www.nuget.org/packages/EnterpriseLibrary.Source/ –

Antwort

1

Wie bekomme ich denselben Schlüssel, um die Daten entschlüsseln und verwenden zu können ...?

Einer der Idee von Crypto Cyphers ist, dass sie unabhängig von der implementierenden Technologie sind. Sie können Daten mit .NET verschlüsseln und mit Java oder was auch immer entschlüsseln. Alles, was Sie tun müssen, kann wie folgt zusammengefasst werden:

  • Haben Sie den Schlüssel. In der symmetrischen Verschlüsselung wird derselbe Schlüssel sowohl für die Verschlüsselung als auch für die Entschlüsselung verwendet.
  • Konfigurationswerte (z. B. IV oder Initialisierungsvektor, Länge des Chiffrierblocks, Art der Verschlüsselung, verwendete Hash - Funktion, Name der Chiffre usw)

Da Sie diese beiden haben, können Sie in jeder Technologie (mit ein wenig Schmerz verschlüsseln/entschlüsseln, um es zuerst loslegen, vor allem für die richtige Taste oder Konfiguration verbracht Suche)

ich öffnete der Konfigurationsmanager der Version 5.0, um den Schlüssel zu sehen, aber kann ich ihn benutzen oder nicht?

Nicht vertraut mit Config Manager, aber Sie müssen den Schlüssel extrahieren von irgendwo. Achten Sie darauf, es im richtigen Format zu bekommen - Sie brauchen rohe Binärformat. Wenn es in einer Datei gespeichert wird, könnte es mit der Windows-API von Windows verschlüsselt werden oder im Base64-Format gespeichert werden.

+0

IV Dieser Wert wird auch für RijndaelManaged benötigt? Ich meine, wenn Sie zum Beispiel es initiieren und Sie IV nicht setzen, wird es Null sein oder es wird irgendeinen zufälligen Wert haben, der dann zum Verschlüsseln benutzt wird? Für den Schlüssel ja ich denke, ich habe es in hexadezimaler Form, aber ich habe keine Ahnung von IV. die Enterprise-Bibliothek, die sie mit dieser Methode verschlüsselt, aber das ist es, nichts über die IV und wie sie es genau gemacht haben .... – Alnedru

+0

AFAIK meisten Cyphers IVs verwenden. Man kann letztendlich eine Klartextnachricht ableiten, wenn keine oder dieselbe IV verwendet wird ([mehr hier] (http://crypto.stackexchange.com/a/734)), ohne sich jemals zu ändern. Ich vermute, dass EntLib IV nicht benutzt hat, versuche die Entschlüsselung ohne Einstellung von IV auszuführen und schau, ob du aussagekräftige Ergebnisse zurückbekommst. – oleksii