Vb.Net Kryptografie ... Problem...

03/13/2011 02:21 HdCoders#1
Hallo!

Ich möchte gerne meine AES Verschlüsselung zum laufen bringen!


Quote:
Imports System.Security.Cryptography
Imports System.IO
Imports System.Text
Public Class Form1
Inherits System.Windows.Forms.Form
' Encrypt using stream (binary)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim rd As New RijndaelManaged

Dim md5 As New MD5CryptoServiceProvider
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(RichTextBox 1.Text))

md5.Clear()
rd.Key = key
rd.GenerateIV()

Dim iv() As Byte = rd.IV
Dim ms As New MemoryStream

ms.Write(iv, 0, iv.Length)

Dim cs As New CryptoStream(ms, rd.CreateEncryptor, CryptoStreamMode.Write)
Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes(RichTextBox2.Te xt)

cs.Write(data, 0, data.Length)
cs.FlushFinalBlock()

Dim encdata() As Byte = ms.ToArray()
TextBox1.Text = Convert.ToBase64String(encdata)
cs.Close()
rd.Clear()
RichTextBox2.Text = ""
End Sub
' Decrypt using stream (binary)
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim rd As New RijndaelManaged
Dim rijndaelIvLength As Integer = 16
Dim md5 As New MD5CryptoServiceProvider
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(RichTextBox 1.Text))

md5.Clear()

Dim encdata() As Byte = Convert.FromBase64String(TextBox1.Text)
Dim ms As New MemoryStream(encdata)
Dim iv(15) As Byte

ms.Read(iv, 0, rijndaelIvLength)
rd.IV = iv
rd.Key = key

Dim cs As New CryptoStream(ms, rd.CreateDecryptor, CryptoStreamMode.Read)

Dim data(ms.Length - rijndaelIvLength) As Byte
Dim i As Integer = cs.Read(data, 0, data.Length)

RichTextBox2.Text = System.Text.Encoding.UTF8.GetString(data, 0, i)
cs.Close()
rd.Clear()
End Sub

Private Sub RichTextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox2.TextChanged

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Close()
End Sub

Private Sub Label4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label4.Click

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
End Class

Er unterstreicht beim Klick auf "Entschlüsseln"

Quote:
data(ms.Length - rijndaelIvLength) As Byte
Und sagt: Dividieren sie nicht durch 0


Ideen?


MfG
03/13/2011 09:51 xNopex#2
Dir ist bekannt, dass man nicht durch 0 teilen darf? Dann vorher prüfen, ob der Nenner 0 ist.. Falls ja, nicht teilen und ne Exception werfen oder whatever.
03/13/2011 13:21 HdCoders#3
Quote:
Originally Posted by xNopex View Post
Dir ist bekannt, dass man nicht durch 0 teilen darf? Dann vorher prüfen, ob der Nenner 0 ist.. Falls ja, nicht teilen und ne Exception werfen oder whatever.
Woran soll ich bitte merken dass der Nenner 0 ist ._.
03/13/2011 14:31 xNopex#4
Ich hätts mir vllt. doch erst mal genauer anschauen sollen, bevor ich schnell antworte. btw. wenn man sich so einen vb code näher anschaut, läuft man Gefahr, blind zu werden...

Zuerst:
Code:
Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes(RichTextBox2.Te xt)
Hier sollte der Compiler meckern.


Dann zum eig. Fehler:
Ich würde mal prüfen, ob vllt. "rijndaelIvLength > ms.Length". Vllt. rührt der Fehler daher. Wäre für mich die einzige Erklärung.