# VB-RSA Entschlüsselung Problem



## Golox (24. Mai 2007)

Hallo zusammen,
nen Freund von mir versucht in VB nen Programm zu erstellen, mit dem man per RSA-Verfahren, Ver- und Entschlüsseln kann. Das Verschlüsseln klappt, aber das Entschlüsseln will einfach nicht funktionieren. Beim Entschlüsseln kommen immer andere Buchstaben raus, als eigentlich sollen. Richtig verschlüsselt wird der Text, dass hat er mit nem RSA Rechner im Internet nachgeprüft. Kann mir bzw. ihm jemand helfen?
Hier der Code:


```
Public Sub rsa()

        Dim ansi As Integer
        Dim i As Integer
        Dim txtin As String = txtinput.Text
        Dim txtout As String = ""
        Dim schlüssel = txtschlüssel.Text
        Dim rsa As String = txtrsa.Text
        Dim ansi_len As String = ""
        Dim a As Integer

        'txtschlüssel auf Gültigkeit prüfen
        If schlüssel = Nothing Or "0" Then
            MsgBox("Bitte geben Sie an, um wie viele Stellen Sie die Zeichen verschieben möchten.", _
            MsgBoxStyle.Critical, "Bitte nicht 0 (Null) eingeben!")
            txtschlüssel.Text = ""
            Return
        End If

        If schlüssel < -1000000000 Or schlüssel > 1000000000 Then
            MsgBox("Bitte geben Sie keine Werte über 1.000.000.000 bzw. unter -1.000.000.000 an.", _
            MsgBoxStyle.Critical, "Maximalwerte überschritten")
            txtschlüssel.Text = ""
            Return
        End If

        'txtin auf Gültigkeit prüfen
        If txtin = "" Then MsgBox("Bitte geben Sie einen Text zum Verschlüsseln/Entschlüsseln ein.", _
        MsgBoxStyle.Critical, "Kein Text")

        If modus <> 23 Then a = 1 Else a = Len(rsa)

        'Kodieren
        For i = 1 To Len(txtin) Step a

            'Absätze übernehmen
            Select Case modus
                Case 13 'RSA verschlüsseln
                    ansi_len = Asc(Mid(txtin, i, 1)) ^ schlüssel Mod rsa
                    Do Until Len(ansi_len) = Len(rsa)
                        ansi_len = 0 & ansi_len
                    Loop
                    MsgBox(ansi_len)
                Case 23 'RSA entschlüsseln
                    'ansi = Mid(txtin, i, Len(rsa))
                    ansi = Mid(txtin, i, Len(rsa)) ^ schlüssel Mod rsa
                    MsgBox(ansi)
                    'ansi = ansi ^ schlüssel - rsa * Int(ansi ^ schlüssel / rsa)
            End Select

            If modus <> 13 Then
                txtout = txtout & Chr(ansi)
            Else
                txtout = txtout & ansi_len
            End If

        Next i

        txtoutput.Text = txtout

    End Sub
```

Mit freundlichen Grüßen Golox


----------



## ronaldh (24. Mai 2007)

In was für einem VB hat er das denn probiert? Das, was Du das gepostet hast, kann grundsätzlich hinten und vorne nicht funktionieren.

Schon an den vielen roten Zeilen (das sind Zeilen, die VB als Syntaxfehler anzeigt) sieht man, dass hier schwerwiegend Müll vorliegt.

"Return" innerhalb einer Sub ohne zugehöriges Gosub knallt natürlich auch (wo soll er denn returnen?).

Und Zeilen wie:

```
ansi_len = Asc(Mid(txtin, i, 1)) ^ schlüssel Mod rs
```
können nicht funktionieren, da "Ansi_len" als String dimensioniert ist, die Asc-Funktion aber einen Integer zurück gibt.

Es sind noch viele andere Fehler drin, das ist mir aber jetzt zu müßig, dies alles auszuprobieren.

ronaldh


----------



## Golox (24. Mai 2007)

Guten Tag,

er hat alles in VB6 programmiert. Keine Ahnung warum die Zeilen hier in Rot dargestellt werden, aber in Visual Studios wird kein einzige Fehler angezeigt, und das Programm stürzt auch nicht ab o.ä. Es klappt alles bis auf die Entschlüsselung.

Mit freundlichen Grüßen Golox


----------



## DrSoong (24. Mai 2007)

Erstmal, diese vielen schönen roten Zeilen kommen zustande, da Golox die falschen Code-Tags verwendet hat (PHP statt VB).

Zweitens schaut mir das nach stark nach VB.NET aus, dazu bitte diesen Post hier beachten.


Der Doc!


----------

