Gateway_man Geschrieben 15. August 2010 Geschrieben 15. August 2010 Hallo, steh gerade enorm auf der Leitung. Ich hab mir ne Prozedur zum verschlüsseln von Dateien mit AES geschrieben. Private Sub EncryptFile() Try RaiseEvent StartEncrypt(Path.GetFileName(CsSource)) Dim OldFileStream As New FileStream(CsSource, FileMode.Open) Dim NewFileStream As New FileStream(CsTarget, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite) Dim RijndaelManaged As New RijndaelManaged Dim CryptoStream As New CryptoStream(NewFileStream, RijndaelManaged.CreateEncryptor(sKey, sKey), CryptoStreamMode.Write) Dim Data(CBufferSize) As Byte Dim Buffer As Long Dim BufferCount As Long Dim FileLen As Long = OldFileStream.Length Do If BufferCount >= FileLen - CBufferSize Then ReDim Data(FileLen - BufferCount) Buffer = OldFileStream.Read(Data, 0, FileLen - BufferCount) CryptoStream.Write(Data, 0, Buffer) Exit Do End If Buffer = OldFileStream.Read(Data, 0, CBufferSize) CryptoStream.Write(Data, 0, CBufferSize) BufferCount += Buffer Loop OldFileStream.Close() CryptoStream.Close() NewFileStream.Close() RaiseEvent FinishedEncrypt(Path.GetFileName(CsTarget)) Catch e As Exception RaiseEvent OccureError(e.Message) End Try End Sub Nun wollte ich die Prozedur für ein anderes Projekt abändern. Die Eingabe bekomm ich immer als Byte-Array und die Ausgabe soll wiederrum Byte-Array sein. Sprich der Funktionsaufbau sieht in etwa so aus: Private Function ByteEncryption(byval input as Byte(), byval sKey as Byte()) as Byte() dim result as Byte() ... return result End Function Das Problem liegt darin das die Rijndael Managed Klasse nur Streams als Übergabe zu unterstützen scheint und nicht direkt Byte-Array's. Das ist natürlich höchst ärgerlich, denn dann müsste ich jedes Bytearray erstmal wegschreiben um es kurz darauf wieder über einen FileStream einzulesen und diesen für Rijndael zu referenzieren. Und das Ergebnis der Verschlüsselung müsste ich wiederrum wegschreiben per Filestream. Das ist natürlich nicht gerade Performant und höchst ärgerlich. Kennt jemand eventuell nen kleinen Trick oder eine gute Idee wie ich auf die benötigten FileStreams verzichten kann. Lg Gateway Zitieren
Klotzkopp Geschrieben 15. August 2010 Geschrieben 15. August 2010 Das ist natürlich höchst ärgerlich, denn dann müsste ich jedes Bytearray erstmal wegschreiben um es kurz darauf wieder über einen FileStream einzulesen und diesen für Rijndael zu referenzieren.Es muss doch kein FileStream sein. Wie wäre es mit einem MemoryStream? Zitieren
Gateway_man Geschrieben 15. August 2010 Autor Geschrieben 15. August 2010 Danke dir. Stand ganz schön auf der Leitung :old . Lg Gateway Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.