Hallo Leute!
Ich arbeite seit letztens an einem crypter, der zuerst den Text mit Rijndael und dann zusätzlich nochmal mit einem Case verschlüsselt. hier der aktuelle code:
VERSCHLÜSSELN:
Spoiler anzeigen
ENTSCHLÜSSELN:
Spoiler anzeigen
EnDeCase.dll:
auf die function ReadLine möchte ich jetzt nicht weiter eingehen, diese steht woanders.
Das verschlüsseln klappt fehlerlos.
Beim entschlüsseln tritt jedoch der fehler auf, dass im case als EINZIGES das z zu einem a übersetzt wird. der rest wird nicht übersetzt. --> fehler beim entschlüsseln mit rijndael.
kann mir einer beim finden des fehlers helfen?
danke im vorraus!
//EDIT: Überall, wo im code 3zeilen lang . steht, ist die reihenfolge klar, und es wurde wegen max. 15000 zeichen gekürzt.
Ich arbeite seit letztens an einem crypter, der zuerst den Text mit Rijndael und dann zusätzlich nochmal mit einem Case verschlüsselt. hier der aktuelle code:
VERSCHLÜSSELN:
VB.NET-Quellcode
- Dim rd As New RijndaelManaged
- Dim md5 As New MD5CryptoServiceProvider
- Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(PasswordToCrypt.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(TextToCrypt.Text)
- cs.Write(data, 0, data.Length)
- cs.FlushFinalBlock()
- Dim encdata() As Byte = ms.ToArray()
- TextToCrypt.Text = ""
- TextToCrypt.Text = Convert.ToBase64String(encdata)
- cs.Close()
- rd.Clear()
- UseCase = 1
- If UseCase = 1 Then
- Dim str As String, Newstr As String = Nothing
- str = TextToCrypt.Text
- For Each StrText As String In str
- Select Case True
- 'chars
- Case StrText = "a"
- StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 1)
- .
- .
- .
- StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 25)
- Case StrText = "z"
- StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 26)
- 'nums
- Case StrText = "1"
- StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 27)
- .
- .
- .
- Case StrText = "9"
- StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 35)
- Case StrText = "0"
- StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 36)
- 'UPER CASE
- Case StrText = "A"
- StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 37)
- .
- .
- .
- .
- Case StrText = "Z"
- StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 62)
- 'Secial Char
- Case StrText = "½"
- StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 63)
- .
- .
- .
- Case StrText = "|"
- StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 98)
- Case True
- For I = 0 To X.Length - 1
- StrText = StrText.Replace(V.ElementAt(I), _
- X.ElementAt(I))
- Next
- End Select
- Newstr &= StrText
- Next
- TextToCrypt.Text = Newstr
- UseCase = 0
- End If
ENTSCHLÜSSELN:
VB.NET-Quellcode
- Dim str As String, Newstr As String = Nothing
- str = TextToDecrypt.Text
- For Each StrText As String In str
- Select Case True
- 'chars
- Case StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 1)
- StrText = "a"
- .
- .
- .
- Case StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 26)
- StrText = "z"
- 'nums
- Case StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 27)
- StrText = "1"
- .
- .
- .
- Case StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 35)
- StrText = "9"
- Case StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 36)
- StrText = "0"
- 'UPER CASE
- Case StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 37)
- StrText = "A"
- .
- .
- .
- Case StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 62)
- StrText = "Z"
- 'Secial Char
- Case StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 63)
- StrText = "½"
- .
- .
- .
- Case StrText = ReadLine(Path.GetDirectoryName(Application.ExecutablePath) + "\CrypterData\EnDeCase.dll", 98)
- StrText = "|"
- Case True
- For I = 0 To X.Length - 1
- StrText = StrText.Replace(V.ElementAt(I), _
- X.ElementAt(I))
- Next
- End Select
- Newstr &= StrText
- Next
- TextToDecrypt.Text = Newstr
- Dim rd As New RijndaelManaged
- Dim rijndaelIvLength As Integer = 16
- Dim md5 As New MD5CryptoServiceProvider
- Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(PasswordToDecrypt.Text))
- md5.Clear()
- Try
- Dim encdata() As Byte = Convert.FromBase64String(TextToDecrypt.Text)
- Dim ms As New MemoryStream(encdata)
- Dim iv(15) As Byte
- ms.Read(iv, 0, rijndaelIvLength)
- rd.IV = iv
- rd.Key = key
- Try
- 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)
- TextToDecrypt.Text = System.Text.Encoding.UTF8.GetString(data, 0, i)
- cs.Close()
- rd.Clear()
- Catch CryptographicExceptionParameter As CryptographicException
- MessageBox.Show("Decrypting Process failure!" + vbCrLf + "(Password incorrect or wrong type?)", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
- End Try
- Catch formatExceptionParameter As FormatException
- MessageBox.Show("Decrypting Process failure!" + vbCrLf + "(Password incorrect or wrong type?)", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
- End Try
EnDeCase.dll:
auf die function ReadLine möchte ich jetzt nicht weiter eingehen, diese steht woanders.
Das verschlüsseln klappt fehlerlos.
Beim entschlüsseln tritt jedoch der fehler auf, dass im case als EINZIGES das z zu einem a übersetzt wird. der rest wird nicht übersetzt. --> fehler beim entschlüsseln mit rijndael.
kann mir einer beim finden des fehlers helfen?
danke im vorraus!
//EDIT: Überall, wo im code 3zeilen lang . steht, ist die reihenfolge klar, und es wurde wegen max. 15000 zeichen gekürzt.