Hi miteinander,
habe wieder ein kleines Problem und hoff, dass ihr mir helfen könnt.
Ein Bild soll verschickt werden über die Netzwerk-Verbindung (siehe letzten Thread ;) ),
bevor ich mich aber wieder daran begebe, möchte ich die Verschlüsselung gewährleisten und speichere die Bilddaten in einer Datei.
Ich habe zwei Funktionen, die ich zur Verschlüsselung verwende:
Private Key() As Byte = UTF8.GetBytes("<--fester string-->")
Private KeyHash() As Byte = Nothing Public Function DecryptStream(ByVal UsedStream As Stream) As CryptoStream
Dim cmd5Provider As New MD5CryptoServiceProvider
Dim caesProvider As New RijndaelManaged
Dim caesStream As CryptoStream
KeyHash = cmd5Provider.ComputeHash(Key)
With caesProvider
.Key = KeyHash
.GenerateIV()
caesStream = New CryptoStream(UsedStream, .CreateDecryptor(.Key, _
.IV), CryptoStreamMode.Read)
End With
Return caesStream
End Function Public Function EncryptStream(ByVal UsedStream As Stream) As CryptoStream
Dim cmd5Provider As New MD5CryptoServiceProvider
Dim caesProvider As New RijndaelManaged
Dim caesStream As CryptoStream
KeyHash = cmd5Provider.ComputeHash(Key)
With caesProvider
.Key = KeyHash
.GenerateIV()
caesStream = New CryptoStream(UsedStream, .CreateEncryptor(.Key, _
.IV), CryptoStreamMode.Write)
End With
Return caesStream
End Function Die sind in einer Klasse gekapselt. Der Aufruf geschieht über zwei Buttons.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Dim fStream As FileStream = File.Open("C:\img.jpg", FileMode.Create)
Dim cStream As CryptoStream
cStream = EncryptStream(fStream)
Dim grabber As New ScreenGrabber(New Rectangle(New Point(0, 0), _
PictureBox1.Size))
PictureBox1.Image = grabber.GetScreenshot
Dim info As ImageCodecInfo() = ImageCodecInfo.GetImageEncoders()
Dim Params As EncoderParameters = New EncoderParameters(1)
Params.Param(0) = New EncoderParameter(Encoder.Quality, 100L)
PictureBox1.Image.Save(cStream, info(1), Params)
cStream.Close()
fStream.Close()
End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button2.Click
Dim fStream As FileStream = File.Open("C:\img.jpg", FileMode.Open)
Dim cStream As CryptoStream
cStream = DecryptStream(fStream)
Try
PictureBox1.Image = Image.FromStream(cStream)
Catch ex As Exception
MsgBox(ex.Message) ' Gibt "Ungültiger Parameter"
End Try
cStream.Close()
fStream.Close()
End Sub Hab den Quellcode schnell angepasst, könnte sein, dass kleinere Fehler
enthalten sind. Aber Vorschläge einfach machen... ich werde schon bescheid
sagen, ob es sich nur um einen Flüchtigkeitsfehler handelt, der nur in diesem
Thread vorhanden ist. |