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?

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...