Hallo ForumUser,
habe ein Script im Netz gefunden um Text zu chiffrieren und dechiffrieren.
Es funktioniert wunderbar.. auch in meiner abgeänderten Variante für mein eigenes Scrippt.
Jedoch gibt es einen Fehler (auch im Original Scrippt) bei dem ich selber nicht weiß wie man ihn beheben kann.
Deshalb hier das Original:
man benötigt
2 Buttons
3 Textboxen
in Textbox 2 wird der Schlüssel zum chiffrieren und dechiffrieren eingetragen
Funktioniert einwandfrei! ABER chiffriert man den im scrippt vorgegeben String mit der TextBox2 zb mit "hallo" und dechiffriert ihn wieder aber nun trägt man in die Textbox2 irrtümlichweise nur "hall" ein, so wird das scrippt abgebrochen.. anstelle dessen wäre aber eine MsgBox sinnvoll und ein zurücksetzen der Textbox2 logisch.. jedoch wie verhindere ich diesen Abruch? Zustande kommt dieser Fehler weil die lenght des eingegeben Sclüssels nicht korrekt ist. Wie kann ich das aber verhindern? Bzw wenn das so geschieht einen vorzeitigen Abbruch bewirken bevor sich das Scrippt aufhängt??
Grüße
OttoVB
habe ein Script im Netz gefunden um Text zu chiffrieren und dechiffrieren.
Es funktioniert wunderbar.. auch in meiner abgeänderten Variante für mein eigenes Scrippt.
Jedoch gibt es einen Fehler (auch im Original Scrippt) bei dem ich selber nicht weiß wie man ihn beheben kann.
Deshalb hier das Original:
man benötigt
2 Buttons
3 Textboxen
in Textbox 2 wird der Schlüssel zum chiffrieren und dechiffrieren eingetragen
VB.NET-Quellcode
- 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(TextBox2.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("abcdefghijk")
- cs.Write(data, 0, data.Length)
- cs.FlushFinalBlock()
- Dim encdata() As Byte = ms.ToArray()
- TextBox3.Text = Convert.ToBase64String(encdata)
- My.Settings.Data = Convert.ToBase64String(encdata)
- cs.Close()
- rd.Clear()
- TextBox1.Text = ""
- My.Settings.Save()
- 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(TextBox2.Text))
- md5.Clear()
- Dim encdata() As Byte = Convert.FromBase64String(My.Settings.Data)
- 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)
- TextBox1.Text = System.Text.Encoding.UTF8.GetString(data, 0, i)
- cs.Close()
- rd.Clear()
- End Sub
- End Class
Funktioniert einwandfrei! ABER chiffriert man den im scrippt vorgegeben String mit der TextBox2 zb mit "hallo" und dechiffriert ihn wieder aber nun trägt man in die Textbox2 irrtümlichweise nur "hall" ein, so wird das scrippt abgebrochen.. anstelle dessen wäre aber eine MsgBox sinnvoll und ein zurücksetzen der Textbox2 logisch.. jedoch wie verhindere ich diesen Abruch? Zustande kommt dieser Fehler weil die lenght des eingegeben Sclüssels nicht korrekt ist. Wie kann ich das aber verhindern? Bzw wenn das so geschieht einen vorzeitigen Abbruch bewirken bevor sich das Scrippt aufhängt??
Grüße
OttoVB