Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[VB.NET] Bytearray mit Rijndael Verschlüsseln

Empfohlene Antworten

Veröffentlicht

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

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?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.