Zum Inhalt springen

[VB.NET] Bytearray mit Rijndael Verschlüsseln


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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?

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...