Hallo Leute, habe bei meinem kleinen Programm zur AES-Dateiverschlüsselung irgendwie Probleme beim Entschlüsseln von Videos...
Der VLC-Media-Player sagt, dass die Datei beschädigt ist
Andere Dateiformate (z.B. .txt,.jpg,...) funktionieren ohne Probleme, hat irgendwer da vielleicht ne Idee?
Vielen Dank schon mal
Kleiner Hinweis, wie das Programm funktioniert:
-Passworteingabe über Textbox
-Salteingabe über Textbox
-Dateiauswahl (Eingabedatei) über OpenFileDialog
-Dateiauswahl (Ausgabedatei) über SaveFileDialog
--> Der Clou: Die Ausgabedatei kann jedes beliebige Dateiformat haben, zum Entschlüsseln muss man sich nur an das ursprüngliche Format,
den Salt und das Passwort erinnern
Bild der Software:
Das Projekt:
AES-FileCryptor.rar
Code:
Spoiler anzeigen
Expander eingefügt. ~Thunderbolt
Der VLC-Media-Player sagt, dass die Datei beschädigt ist
Andere Dateiformate (z.B. .txt,.jpg,...) funktionieren ohne Probleme, hat irgendwer da vielleicht ne Idee?
Vielen Dank schon mal
Kleiner Hinweis, wie das Programm funktioniert:
-Passworteingabe über Textbox
-Salteingabe über Textbox
-Dateiauswahl (Eingabedatei) über OpenFileDialog
-Dateiauswahl (Ausgabedatei) über SaveFileDialog
--> Der Clou: Die Ausgabedatei kann jedes beliebige Dateiformat haben, zum Entschlüsseln muss man sich nur an das ursprüngliche Format,
den Salt und das Passwort erinnern
Bild der Software:
Das Projekt:
AES-FileCryptor.rar
Code:
Quellcode
- Imports System.Security.Cryptography
- Imports System.IO
- Imports System.Text
- Public Class Main
- Dim Salt() As Byte 'Saltwert erzeugen
- Dim Sprache As String 'Sprache erzeugen
- Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Call Button_Alle_Resetten_Click(sender, e) 'Alles resetten
- GC.Collect() 'Garbage-Collector aufrufen
- Blocksize = 1048576 'Blocksize auf 1 MB setzen
- 'Datei öffnen und Sprache auslesen:
- Try
- 'Datei öffnen
- Dim fs As FileStream = New FileStream(System.AppDomain.CurrentDomain.BaseDirectory() & "Config.ini", FileMode.OpenOrCreate, FileAccess.ReadWrite)
- 'Stream öffnen
- Dim r As StreamReader = New StreamReader(fs)
- 'Zeiger auf den Anfang
- r.BaseStream.Seek(0, SeekOrigin.Begin)
- 'Alle Zeilen lesen und an Console ausgeben
- While r.Peek() > -1
- Sprache = r.ReadLine() 'Sprache festsetzen
- End While
- 'Reader und Stream schließen
- r.Close()
- fs.Close()
- Catch ex As Exception
- MessageBox.Show(ex.ToString) 'Fehlermeldung ausgeben
- End Try
- 'Verschlüsselungsarten anzeigen:
- ComboBox_Art.Items.Add("AES-256") 'AES-256 als Verschlüsselungsart hinzufügen
- ComboBox_Art.Items.Add("AES-128") 'AES-128 als Verschlüsselungsart hinzufügen
- ComboBox_Art.SelectedIndex = 0 'Vorauswahl setzen, dass Combobox nicht leer
- 'Default-Saltwert verwenden setzen:
- CheckBox_DefaultSalt.Checked = True 'Default-Saltwert verwenden auf wahr setzen
- 'Sprache anpassen:
- Select Case Sprache
- Case "DE"
- RadioButton_Deutsch.Checked = True 'RadioButton_Deutsch auswählen
- Case Else
- RadioButton_Englisch.Checked = True 'RadioButton_Englisch auswählen
- End Select
- End Sub
- Private Sub EncryptFile(ByVal File As String) 'Eingangsdatei als Byte-Array einlesen
- GC.Collect() 'Garbage-Collector aufrufen
- BytesBereitsGelesen = 0 'BytesBereitsGelesen zurücksetzen
- Dim fInfo As New FileInfo(File) 'FileInfo anlegen
- Dim numBytes As Long = fInfo.Length 'Bytezahl auslesen
- Dim InStream As New FileStream(File, FileMode.Open, FileAccess.Read) 'FileStream (für Input) öffnen
- Dim br As New BinaryReader(InStream) 'Reader öffnen
- Dim data As Byte() 'Datenarray anlegen
- Dim OutStream As FileStream = New FileStream(Ausgabedateipfad, FileMode.Create) 'FileStream (für Output) öffnen
- ProgressBar_Verschluesseln.Maximum = numBytes / Blocksize 'Verhältnis ausrechnen
- If ProgressBar_Verschluesseln.Maximum = 0 Then
- ProgressBar_Verschluesseln.Maximum = 1
- End If
- 'While numBytes Mod Blocksize = 0
- 'Blocksize = Blocksize - 1 'Wenn genaue Dateigröße auf die Grenze fällt --> Kein cs.FlushFinalBlock --> Fehler
- 'End While
- While BytesBereitsGelesen < numBytes
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- If (numBytes - BytesBereitsGelesen) > Blocksize Then
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- data = br.ReadBytes(Blocksize) 'Genau Blocksize lesen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- BytesBereitsGelesen = BytesBereitsGelesen + Blocksize 'BytesBereitsGelesen um Blocksize erhöhen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- Call EncryptAES(AESSize, data, RichTextBox_Passwort.Text, False) 'Verschlüsselung aufrufen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- OutStream.Write(EncryptedString_, 0, EncryptedString_.Length) 'Daten schreiben
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- ProgressBar_Verschluesseln.PerformStep() 'Next step
- Else
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- data = br.ReadBytes(numBytes - BytesBereitsGelesen) 'Genau Blocksize lesen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- BytesBereitsGelesen = numBytes 'BytesBereitsGelesen um Blocksize erhöhen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- Call EncryptAES(AESSize, data, RichTextBox_Passwort.Text, True) 'Verschlüsselung aufrufen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- OutStream.Write(EncryptedString_, 0, EncryptedString_.Length) 'Daten schreiben
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- ProgressBar_Verschluesseln.PerformStep() 'Next step
- End If
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- End While
- OutStream.Close() 'FileStream (für Output) schließen
- InStream.Close() 'FileStream (für Input) schließen
- br.Close() 'Reader schließen
- Select Case Sprache
- Case "DE"
- MessageBox.Show("Datei " & Eingabedateipfad & " erfolgreich verschlüsselt!", "Datei erfolgreich verschlüsselt!", MessageBoxButtons.OK, MessageBoxIcon.Information) 'Meldung ausgeben
- Case Else
- MessageBox.Show("File " & Eingabedateipfad & " successfully encrypted!", "File successfully encrypted!", MessageBoxButtons.OK, MessageBoxIcon.Information) 'Meldung ausgeben
- End Select
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- End Sub
- Private Sub DecryptFile(ByVal File As String) 'Eingangsdatei als Byte-Array einlesen
- GC.Collect() 'Garbage-Collector aufrufen
- BytesBereitsGelesen = 0 'BytesBereitsGelesen zurücksetzen
- Dim fInfo As New FileInfo(File) 'FileInfo anlegen
- Dim numBytes As Long = fInfo.Length 'Bytezahl auslesen
- Dim InStream As New FileStream(File, FileMode.Open, FileAccess.Read) 'FileStream (für Input) öffnen
- Dim br As New BinaryReader(InStream) 'Reader öffnen
- Dim data As Byte() 'Datenarray anlegen
- Dim OutStream As FileStream = New FileStream(Ausgabedateipfad, FileMode.Create) 'FileStream (für Output) öffnen
- ProgressBar_Verschluesseln.Maximum = numBytes / Blocksize 'Verhältnis ausrechnen
- If ProgressBar_Verschluesseln.Maximum = 0 Then
- ProgressBar_Verschluesseln.Maximum = 1
- End If
- 'While numBytes Mod Blocksize = 0
- 'Blocksize = Blocksize - 1 'Wenn genaue Dateigröße auf die Grenze fällt --> Kein cs.FlushFinalBlock --> Fehler
- 'End While
- While BytesBereitsGelesen < numBytes
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- If (numBytes - BytesBereitsGelesen) > Blocksize Then
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- data = br.ReadBytes(Blocksize) 'Genau Blocksize lesen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- BytesBereitsGelesen = BytesBereitsGelesen + Blocksize 'BytesBereitsGelesen um Blocksize erhöhen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- Call DecryptAES(AESSize, data, RichTextBox_Passwort.Text, False) 'Verschlüsselung aufrufen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- OutStream.Write(DecryptedString_, 0, DecryptedString_.Length) 'Daten schreiben
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- ProgressBar_Verschluesseln.PerformStep() 'Next step
- Else
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- data = br.ReadBytes(numBytes - BytesBereitsGelesen) 'Genau Blocksize lesen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- BytesBereitsGelesen = numBytes 'BytesBereitsGelesen um Blocksize erhöhen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- Call DecryptAES(AESSize, data, RichTextBox_Passwort.Text, True) 'Verschlüsselung aufrufen
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- OutStream.Write(DecryptedString_, 0, DecryptedString_.Length) 'Daten schreiben
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- ProgressBar_Verschluesseln.PerformStep() 'Next step
- End If
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- End While
- OutStream.Close() 'FileStream (für Output) schließen
- InStream.Close() 'FileStream (für Input) schließen
- br.Close() 'Reader schließen
- Select Case Sprache
- Case "DE"
- MessageBox.Show("Datei " & Eingabedateipfad & " erfolgreich entschlüsselt!", "Datei erfolgreich entschlüsselt!", MessageBoxButtons.OK, MessageBoxIcon.Information) 'Meldung ausgeben
- Case Else
- MessageBox.Show("File " & Eingabedateipfad & " successfully decrypted!", "File successfully decrypted!", MessageBoxButtons.OK, MessageBoxIcon.Information) 'Meldung ausgeben
- End Select
- System.Windows.Forms.Application.DoEvents() 'Dass Form nicht einfriert
- End Sub
- Private Sub RadioButton_Deutsch_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton_Deutsch.CheckedChanged
- If RadioButton_Deutsch.Checked = True Then
- Call AllesAufDeutsch() 'Alles auf Deutsch übersetzen
- Else
- Call AllesAufEnglisch() 'Alles auf Englisch übersetzen
- End If
- End Sub
- Private Sub RadioButton_Englisch_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton_Englisch.CheckedChanged
- If RadioButton_Englisch.Checked = True Then
- Call AllesAufEnglisch() 'Alles auf Englisch übersetzen
- Else
- Call AllesAufDeutsch() 'Alles auf Deutsch übersetzen
- End If
- End Sub
- Private Sub AllesAufDeutsch() 'Alles auf Deutsch übersetzen
- Me.Text = "AES Dateiverschlüsselung" 'Text von Form setzen
- Label_Art.Text = "Bitte Verschlüsselungsart auswählen:" 'Label_Art Text setzen
- Label_Salt.Text = "Salteingabe:" 'Label_Salt Text setzen
- Label_Passwort.Text = "Passworteingabe:" 'Label_Passwort Text setzen
- Label_Eingabe.Text = "Dateieingabe:" 'Label_Eingabe Text setzen
- Label_Ausgabe.Text = "Dateiausgabe:" 'Label_Ausgabe Text setzen
- Button_Verschluesseln.Text = "Verschlüsseln" 'Button_Verschluesseln Text setzen
- Button_Entschluesseln.Text = "Entschlüsseln" 'Button_Entschluesseln Text setzen
- Button_Alle_Resetten.Text = "Alles löschen" 'Button_Alle_Resetten Text setzen
- CheckBox_DefaultSalt.Text = "Default Salt-Wert benutzen" 'CheckBox_DefaultSalt Text setzen
- Label_Sprache.Text = "Sprache auswählen:" 'Label_Sprache Text setzen
- RadioButton_Deutsch.Text = "Deutsch" 'RadioButton_Deutsch Text setzen
- RadioButton_Englisch.Text = "Englisch" 'RadioButton_Englisch Text setzen
- Sprache = "DE" 'Sprache festlegen
- OpenFileDialog_Eingabe.Filter = "Alle Dateien (*.*)|*.*" 'OpenFileDialog_Eingabe Filter setzen
- OpenFileDialog_Eingabe.Title = "Eingabedatei auswählen" 'OpenFileDialog_Eingabe Titel setzen
- SaveFileDialog_Ausgabe.Filter = "Alle Dateien (*.*)|*.*" 'SaveFileDialog_Ausgabe Filter setzen
- SaveFileDialog_Ausgabe.Title = "Ausgabedatei auswählen" 'SaveFileDialog_Ausgabe Titel setzen
- Button_Eingabe.Text = "Eingabedatei auswählen" 'Button_Eingabe Text setzen
- Button_Ausgabe.Text = "Ausgabedatei auswählen" 'Button_Ausgabe Text setzen
- Label_Ausgabe.Text = "Dateiausgabe: " 'Label_Ausgabe Text setzen
- End Sub
- Private Sub AllesAufEnglisch() 'Alles auf Englisch übersetzen
- Me.Text = "AES File Cryptor" 'Text von Form setzen
- Label_Art.Text = "Choose encryption method:" 'Label_Art Text setzen
- Label_Salt.Text = "Salt input:" 'Label_Salt Text setzen
- Label_Passwort.Text = "Password input:" 'Label_Passwort Text setzen
- Label_Eingabe.Text = "File input:" 'Label_Eingabe Text setzen
- Label_Ausgabe.Text = "File output:" 'Label_Ausgabe Text setzen
- Button_Verschluesseln.Text = "Encrypt" 'Button_Verschluesseln Text setzen
- Button_Entschluesseln.Text = "Decrypt" 'Button_Entschluesseln Text setzen
- Button_Alle_Resetten.Text = "Clear all" 'Button_Alle_Resetten Text setzen
- CheckBox_DefaultSalt.Text = "Use default Salt value" 'CheckBox_DefaultSalt Text setzen
- Label_Sprache.Text = "Choose language:" 'Label_Sprache Text setzen
- RadioButton_Deutsch.Text = "German" 'RadioButton_Deutsch Text setzen
- RadioButton_Englisch.Text = "English" 'RadioButton_Englisch Text setzen
- Sprache = "EN" 'Sprache festlegen
- OpenFileDialog_Eingabe.Filter = "All files (*.*)|*.*" 'OpenFileDialog_Eingabe Filter setzen
- OpenFileDialog_Eingabe.Title = "Select input file" 'OpenFileDialog_Eingabe Titel setzen
- SaveFileDialog_Ausgabe.Filter = "All files (*.*)|*.*" 'SaveFileDialog_Ausgabe Filter setzen
- SaveFileDialog_Ausgabe.Title = "Select output file" 'SaveFileDialog_Ausgabe Titel setzen
- Button_Eingabe.Text = "Select input file" 'Button_Eingabe Text setzen
- Button_Ausgabe.Text = "Select output file" 'Button_Ausgabe Text setzen
- Label_Ausgabe.Text = "File output:" 'Label_Ausgabe Text setzen
- End Sub
- Private Sub CheckBox_DefaultSalt_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_DefaultSalt.CheckedChanged 'DefaultSaltCheck
- Select Case CheckBox_DefaultSalt.Checked
- Case True
- RichTextBox_Salt.Enabled = False 'Salteingabe sperren
- Case False
- RichTextBox_Salt.Enabled = True 'Salteingabe entsperren
- End Select
- End Sub
- Private Sub Button_Verschluesseln_Click(sender As Object, e As EventArgs) Handles Button_Verschluesseln.Click 'Text verschlüsseln
- Try
- LastBlockFlushed = False 'LastBlockFlushed auf false setzen
- ProgressBar_Verschluesseln.Value = 0 'ProgressBar_Verschluesseln zurücksetzen
- Select Case ComboBox_Art.SelectedIndex
- Case 0 'AES-256 ausgewählt
- AESSize = 256 'AESSize auf 256 setzen
- If RichTextBox_Passwort.Text = "" Or Label_Eingabedatei.Text = "" Then 'Wenn Felder leer sind
- Select Case Sprache
- Case "DE"
- MessageBox.Show("Passwort oder Dateieingabe ist leer") 'Fehlermeldung ausgeben
- Case Else
- MessageBox.Show("Password or file input is empty") 'Fehlermeldung ausgeben
- End Select
- Else 'Wenn Felder gefüllt sind
- If CheckBox_DefaultSalt.Checked = True Then 'Default-Saltwert verwenden
- Salt = System.Text.Encoding.UTF8.GetBytes("Test")
- Call EncryptFile(Label_Eingabedatei.Text) 'Datei verschlüsseln
- Else 'Benutzerdefinierten Saltwert verwenden
- If RichTextBox_Salt.TextLength < 8 Then 'Wenn Saltwert zu klein ist
- Select Case Sprache
- Case "DE"
- MessageBox.Show("Saltwert muss mindestens 8 Zeichen enthalten") 'Fehlermeldung ausgeben
- Case Else
- MessageBox.Show("Salt value must contain at least 8 characters") 'Fehlermeldung ausgeben
- End Select
- Else
- Salt = System.Text.Encoding.UTF8.GetBytes(RichTextBox_Salt.Text) 'Salt aus Benutzereingabe auslesen
- Call EncryptFile(Label_Eingabedatei.Text) 'Datei verschlüsseln
- End If
- End If
- End If
- Case 1 'AES-128 ausgewählt
- AESSize = 128 'AESSize auf 128 setzen
- If RichTextBox_Passwort.Text = "" Or Label_Eingabedatei.Text = "" Then 'Wenn Felder leer sind
- Select Case Sprache
- Case "DE"
- MessageBox.Show("Passwort oder Dateieingabe ist leer") 'Fehlermeldung ausgeben
- Case Else
- MessageBox.Show("Password or file input is empty") 'Fehlermeldung ausgeben
- End Select
- Else 'Wenn Felder gefüllt sind
- If CheckBox_DefaultSalt.Checked = True Then 'Default-Saltwert verwenden
- Salt = System.Text.Encoding.UTF8.GetBytes("Test")
- Call EncryptFile(Label_Eingabedatei.Text) 'Datei verschlüsseln
- Else 'Benutzerdefinierten Saltwert verwenden
- If RichTextBox_Salt.TextLength < 8 Then 'Wenn Saltwert zu klein ist
- Select Case Sprache
- Case "DE"
- MessageBox.Show("Saltwert muss mindestens 8 Zeichen enthalten") 'Fehlermeldung ausgeben
- Case Else
- MessageBox.Show("Salt value must contain at least 8 characters") 'Fehlermeldung ausgeben
- End Select
- Else
- Salt = System.Text.Encoding.UTF8.GetBytes(RichTextBox_Salt.Text) 'Salt aus Benutzereingabe auslesen
- Call EncryptFile(Label_Eingabedatei.Text) 'Datei verschlüsseln
- End If
- End If
- End If
- End Select
- Catch ex As Exception
- MessageBox.Show(ex.ToString) 'Fehlermeldung ausgeben
- End Try
- End Sub
- Private Sub Button_Entschluesseln_Click(sender As Object, e As EventArgs) Handles Button_Entschluesseln.Click
- Try
- LastBlockFlushed = False 'LastBlockFlushed auf false setzen
- ProgressBar_Verschluesseln.Value = 0 'ProgressBar_Verschluesseln zurücksetzen
- Select Case ComboBox_Art.SelectedIndex
- Case 0 'AES-256 ausgewählt
- AESSize = 256 'AESSize auf 256 setzen
- If RichTextBox_Passwort.Text = "" Or Label_Eingabedatei.Text = "" Then 'Wenn Felder leer sind
- Select Case Sprache
- Case "DE"
- MessageBox.Show("Passwort oder Dateieingabe ist leer") 'Fehlermeldung ausgeben
- Case Else
- MessageBox.Show("Password or file input is empty") 'Fehlermeldung ausgeben
- End Select
- Else 'Wenn Felder gefüllt sind
- If CheckBox_DefaultSalt.Checked = True Then 'Default-Saltwert verwenden
- Salt = System.Text.Encoding.UTF8.GetBytes("Test")
- Call DecryptFile(Label_Eingabedatei.Text) 'Datei entschlüsseln
- Else 'Benutzerdefinierten Saltwert verwenden
- If RichTextBox_Salt.TextLength < 8 Then 'Wenn Saltwert zu klein ist
- Select Case Sprache
- Case "DE"
- MessageBox.Show("Saltwert muss mindestens 8 Zeichen enthalten") 'Fehlermeldung ausgeben
- Case Else
- MessageBox.Show("Salt value must contain at least 8 characters") 'Fehlermeldung ausgeben
- End Select
- Else
- Salt = System.Text.Encoding.UTF8.GetBytes(RichTextBox_Salt.Text) 'Salt aus Benutzereingabe auslesen
- Call DecryptFile(Label_Eingabedatei.Text) 'Datei entschlüsseln
- End If
- End If
- End If
- Case 1 'AES-128 ausgewählt
- AESSize = 128 'AESSize auf 128 setzen
- If RichTextBox_Passwort.Text = "" Or Label_Eingabedatei.Text = "" Then 'Wenn Felder leer sind
- Select Case Sprache
- Case "DE"
- MessageBox.Show("Passwort oder Dateieingabe ist leer") 'Fehlermeldung ausgeben
- Case Else
- MessageBox.Show("Password or file input is empty") 'Fehlermeldung ausgeben
- End Select
- Else 'Wenn Felder gefüllt sind
- If CheckBox_DefaultSalt.Checked = True Then 'Default-Saltwert verwenden
- Salt = System.Text.Encoding.UTF8.GetBytes("Test")
- Call DecryptFile(Label_Eingabedatei.Text) 'Datei entschlüsseln
- Else 'Benutzerdefinierten Saltwert verwenden
- If RichTextBox_Salt.TextLength < 8 Then 'Wenn Saltwert zu klein ist
- Select Case Sprache
- Case "DE"
- MessageBox.Show("Saltwert muss mindestens 8 Zeichen enthalten") 'Fehlermeldung ausgeben
- Case Else
- MessageBox.Show("Salt value must contain at least 8 characters") 'Fehlermeldung ausgeben
- End Select
- Else
- Salt = System.Text.Encoding.UTF8.GetBytes(RichTextBox_Salt.Text) 'Salt aus Benutzereingabe auslesen
- Call DecryptFile(Label_Eingabedatei.Text) 'Datei entschlüsseln
- End If
- End If
- End If
- End Select
- Catch ex As Exception
- MessageBox.Show(ex.ToString) 'Fehlermeldung ausgeben
- End Try
- End Sub
- Private Sub Button_Alle_Resetten_Click(sender As Object, e As EventArgs) Handles Button_Alle_Resetten.Click
- RichTextBox_Salt.Clear() 'RichTextBox_Salt leeren
- RichTextBox_Passwort.Clear() 'RichTextBox_Passwort leeren
- Label_Eingabedatei.Text = "" 'Label_Eingabedatei leeren
- Label_Ausgabedatei.Text = "" 'Label_Ausgabedatei leeren
- ProgressBar_Verschluesseln.Value = 0 'ProgressBar_Verschluesseln resetten
- End Sub
- 'AES
- #Region "Zustandsvariablen"
- Private EncryptedString_() As Byte
- Private DecryptedString_() As Byte
- #End Region
- #Region "Methoden"
- ' Verschlüsseln
- Public Sub EncryptAES(ByVal AESKeySize As Int32, ByVal DecryptedString() As Byte, ByVal Password As String, ByVal IsLastBlock As Boolean)
- Dim GenerierterKey As New Rfc2898DeriveBytes(Password, Salt)
- Dim AES As New AesManaged
- AES.KeySize = AESKeySize ' möglich sind 128 oder 256 bit
- AES.BlockSize = 128
- ' Algorithmus initialisieren:
- AES.Key = GenerierterKey.GetBytes(AES.KeySize \ 8)
- AES.IV = GenerierterKey.GetBytes(AES.BlockSize \ 8)
- ' Memory-Stream und Crypto-Stream erzeugen -> CreateEncryptor()
- Dim ms As New IO.MemoryStream
- Dim cs As New CryptoStream(ms, AES.CreateEncryptor(), _
- CryptoStreamMode.Write)
- ' Daten verschlüsseln:
- Dim Data() As Byte
- Data = DecryptedString
- cs.Write(Data, 0, Data.Length)
- If IsLastBlock = True Then
- cs.FlushFinalBlock()
- cs.Close()
- LastBlockFlushed = True
- End If
- ' Verschlüsselte Daten als Byte ausgeben:
- EncryptedString_ = ms.ToArray
- ms.Close()
- AES.Clear()
- End Sub
- ' Entschlüsseln
- Public Sub DecryptAES(ByVal AESKeySize As Int32, ByVal EncryptedString() As Byte, ByVal Password As String, ByVal IsLastBlock As Boolean)
- Dim GenerierterKey As New Rfc2898DeriveBytes(Password, Salt)
- ' Instanzierung des AES-Algorithmus-Objekts:
- Dim AES As New AesManaged
- ' Ein mit 256 bit verschlüsseltes Byte kann
- ' auch nur mit 256 bit entschlüsselt werden!
- AES.KeySize = AESKeySize ' möglich sind 128 oder 256 bit
- AES.BlockSize = 128
- ' Algorithmus initialisieren:
- AES.Key = GenerierterKey.GetBytes(AES.KeySize \ 8)
- AES.IV = GenerierterKey.GetBytes(AES.BlockSize \ 8)
- ' Memory-Stream und Crypto-Stream erzeugen -> CreateDecryptor()
- Dim ms As New IO.MemoryStream
- Dim cs As New CryptoStream(ms, AES.CreateDecryptor(), _
- CryptoStreamMode.Write)
- Try ' Daten entschlüsseln:
- Dim Data() As Byte
- Data = EncryptedString
- cs.Write(Data, 0, Data.Length)
- If IsLastBlock = True Then
- cs.FlushFinalBlock()
- cs.Close()
- LastBlockFlushed = True
- End If
- ' Die entschlüsselten Daten als Byte ausgeben:
- DecryptedString_ = ms.ToArray
- ms.Close()
- AES.Clear()
- Catch ex As Exception
- MessageBox.Show(ex.ToString)
- End Try
- End Sub
- #End Region
- #Region "Eigenschaften"
- ReadOnly Property EncryptedString() As Byte()
- Get
- Return EncryptedString_
- End Get
- End Property
- ReadOnly Property DecryptedString() As Byte()
- Get
- Return DecryptedString_
- End Get
- End Property
- #End Region
- 'AES
- Private Sub Button_Eingabe_Click(sender As Object, e As EventArgs) Handles Button_Eingabe.Click
- If OpenFileDialog_Eingabe.ShowDialog() = DialogResult.OK Then
- Eingabedateipfad = OpenFileDialog_Eingabe.FileName 'Eingabedateipfad speichern
- Label_Eingabedatei.Text = Eingabedateipfad 'Label_Eingabedatei Text ausgeben
- Select Case Sprache
- Case "DE"
- Label_Ausgabe.Text = "Dateiausgabe: " 'Label_Ausgabe Text setzen
- Case Else
- Label_Ausgabe.Text = "File output:" 'Label_Ausgabe Text setzen
- End Select
- End If
- End Sub
- Private Sub Button_Ausgabe_Click(sender As Object, e As EventArgs) Handles Button_Ausgabe.Click
- If SaveFileDialog_Ausgabe.ShowDialog() = DialogResult.OK Then
- Ausgabedateipfad = SaveFileDialog_Ausgabe.FileName 'Ausgabedateipfad speichern
- Label_Ausgabedatei.Text = Ausgabedateipfad 'Label_Ausgabedatei Text ausgeben
- Select Case Sprache
- Case "DE"
- Label_Ausgabe.Text = "Dateiausgabe: " 'Label_Ausgabe Text setzen
- Case Else
- Label_Ausgabe.Text = "File output:" 'Label_Ausgabe Text setzen
- End Select
- End If
- End Sub
- End Class
Expander eingefügt. ~Thunderbolt
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Thunderbolt“ ()