Wie vermeidet man zusätzlichen Speicherverbrauch während der Verschlüsselung und Entschlüsselung?

9

Ich habe also eine grundlegende Kryptoklasse. Beachten Sie, dass dies eine vereinfachte Implementierung zur Veranschaulichung der Frage ist.

Nun, meiner Meinung nach haben beide Methoden ein zusätzliches Byte-Array und eine String-Instanz.

xmlString und bytes in Encrypt

und

decryptedString und decryptedBytes in Decrypt

Wie kann ich also die Verwendung von Streams in dieser Klasse überarbeiten, um den Speicherverbrauch zu minimieren?

%Vor%

Und hier ist ein Unit Test

%Vor%

=== Bearbeiten ===

Basierend auf der Anser von Damien_The_Unbeliever habe ich das versucht. Was den Unit-Test nicht besteht

%Vor%     
Simon 19.12.2012, 07:55
quelle

1 Antwort

4

Sie können Ihr XmlWriter direkt über Ihrem CryptoStream (pass crypto bis XmlWriter.Create ) erstellen, anstatt einen separaten Puffer zu verwenden. (Dito für die Entschlüsselung)

Und MemoryStream hat eine ToArray -Methode, so dass Sie sie nicht manuell zuordnen, neu positionieren und lesen müssen.

Abgesehen davon sieht es nach einer vernünftigen Implementierung aus - Gibt es spezifische Probleme, die behoben werden müssen?

Basierend auf Ihrer Änderung, wenn ich die Entschlüsselung zu ändern:

%Vor%

Dann scheint es für mich zu funktionieren.

Die neue Version enthält eine XML-Stückliste, während die alte nicht. Der XmlReader sollte zurechtkommen, hätte ich gedacht, scheint es aber nicht. Probieren Sie die folgenden Einstellungen in Encrypt :

aus %Vor%

Und jetzt funktioniert es mit der alten Funktion Decrypt .

Vollständige Lösung

Verschlüsseln

%Vor%

Entschlüsseln

%Vor%     
Damien_The_Unbeliever 19.12.2012, 08:02
quelle

Tags und Links