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
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?
Gateway_man Geschrieben 15. August 2010 Autor Geschrieben 15. August 2010 Danke dir. Stand ganz schön auf der Leitung :old . Lg Gateway
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden