Probleme mit Gurkenalghoritmus^

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Probleme mit Gurkenalghoritmus^

    Gurkenalghoritmus = Verschlüsselungsalghoritmus


    Hab aus Spaß mal versucht eine Textdatei mit eigenem Alghoritmus verschlüsseln zu lassen, jetzt ist es so, dass ich manchmal eine Exception kriege, dass der Index ausserhalb des Bereichs ist (Beim entschlüsseln) und manchmal klappt die Ver- und Entschlüsselung. Hier ist der Code (Hab die Stelle markiert wo die exception kommt)
    :

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Anwendung
    3. Private Charstring As String = "0abcdefghi3jklmnop1qrstuv2wxyzAB7CDEFGH5IJKLM9NOPQ6RSTUV8WXYZ-?.,#+´ß"
    4. Private Zufallsbuchstabe As New Random
    5. Private Zufall As Integer = Zufallsbuchstabe.Next(0, Charstring.Length)
    6. Private Aktiv As Boolean = False
    7. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    8. Erstellen()
    9. End Sub
    10. Private Sub Erstellen()
    11. If Not TextBox1.Text.Length < 1 Then
    12. Dim Passwort(TextBox1.Text.Length - 1) As String
    13. For Buchstabe = 0 To TextBox1.Text.Length - 1
    14. Passwort(Buchstabe) = TextBox1.Text(Buchstabe)
    15. For Zufal = 0 To Zufall - 1
    16. Passwort(Buchstabe) &= Charstring.Chars(Zufall)
    17. If Aktiv = False Then
    18. Entschlüsselungszufall.Add(Zufall)
    19. Aktiv = True
    20. End If
    21. Zufall = Zufallsbuchstabe.Next(0, Charstring.Length)
    22. Next
    23. Aktiv = False
    24. Next
    25. For Schreiben As Integer = 0 To Passwort.Length - 1
    26. My.Computer.FileSystem.WriteAllText("C:\Users" & Username & "\Desktop\Passwort.txt", Passwort(Schreiben), True)
    27. Next
    28. My.Computer.FileSystem.WriteAllText("C:\Users" & Username & "\Desktop\Passwort.txt", vbCrLf, True)
    29. End If
    30. End Sub
    31. Private Zähler As Integer = 1
    32. Private Entschlüsselung As String
    33. Private Entschlüsselungszufall As New List(Of Integer)
    34. Private Zählerzwei As Integer = 0
    35. Dim Username As String = Environment.GetEnvironmentVariable("USERNAME")
    36. Private Sub auslesen()
    37. If System.IO.File.Exists("C:\Users" & Username & "\Desktop\Passwort.txt") Then
    38. For Each line As String In System.IO.File.ReadAllLines("C:\Users" & Username & "\Desktop\Passwort.txt")
    39. Entschlüsselung &= line.FirstOrDefault
    40. For Each Buchstabe As String In line
    41. If Zähler = Entschlüsselungszufall(Zählerzwei) + 2 Then 'Exception!!!!
    42. Entschlüsselung &= Buchstabe
    43. Zählerzwei += 1
    44. Zähler = 1
    45. End If
    46. Zähler += 1
    47. Next
    48. Next
    49. My.Computer.FileSystem.WriteAllText("C:\Users" & Username & "\Desktop\Passwort.txt", Entschlüsselung, False)
    50. Zähler = 1
    51. Entschlüsselung = ""
    52. Zählerzwei = 0
    53. End If
    54. End Sub
    55. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    56. auslesen()
    57. Entschlüsselungszufall.RemoveRange(0, Entschlüsselungszufall.Count)
    58. End Sub
    59. End Class

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „RushDen“ ()

    Wie willst du etwas entschlüsseln wen du es mit random chars zu spammst :D
    Random = zufall

    überlege dir ein verfahren das man auch wieder entschlüsseln kann :)
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    Die Entschlüsselung funktioniert 8-)
    Ich speichere während die Abstände durch Zufallszahlen definiert werden die Zufallszahl in der Liste und benutze Sie zur Entschlüssellung indem ich jeden Buchstaben auslesen lasse und gleichzeitig einen Zähler hochlaufen lasse und wenn der Zähler die Zahl von dem Index des zweite Zählers (Buchstaben) erreicht hat, fügt er die Zahl an die Variable an und schreibt am ende alles erneut in die Textdatei.
    Also das Passwort befindet sich immernoch in der Datei nur ist halt von einer Anzahl anderer Zeichen (zufällige) umschlossen.
    Das klappt natürlich nicht, wenn ich das Programm schliesse und erneut aufmache, aber dagegen lässt sich auch was finden.
    Nur das Problem ist, dass manchmal eine Exception auftritt wie oben beschrieben.
    Wie steht den in der Fehler-Meldung ?

    ich schätze es gibt ein Fehler weil Hier :

    VB.NET-Quellcode

    1. If Zähler = Entschlüsselungszufall(Zählerzwei) + 2 Then 'Exception!!!!

    der Zähler höher ist als der Count deiner items.
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    @RushDen:: Sieh Dir mal die Länge der erzeugten Datei im Vergleich zur ursprünglichen Zeichenkette an, da ist die Liste Entschlüsselungszufall einfach zu kurz.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Die Liste Entschlüsselungszufall speichert ja die Zufallszahlen (also die Länge die zwischen den Buchstaben des richtigen Passworts liegen). Wieso ist die Liste zu kurz? Die wird ja zusammen mit der Erstellung der verschlüsselten Textdatei befüllt, jenachdem wielang das Passwort ist.

    btw
    Ich hoffe ihr habt nicht wirklich gedacht es ging um Gurken :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RushDen“ ()

    RushDen schrieb:

    Wieso ist die Liste zu kurz?
    Wäre sie nicht zu kurz bzw. der Index zu groß, würde die exception nicht kommen. :rolleyes:
    Setze einen Haltepunkt drauf und sieh Dir an, was da passiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    RushDen schrieb:

    Zufallszahlen in einer Textdatei auf eine Datenbank ablege
    Würde es nicht reichen, Randomize mit demselben Wert zu starten?

    VB.NET-Quellcode

    1. Dim rnd = New Random(111)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Die Zufallszahl ist ja unbekannt und zufällig, wenn das Programm schliesst ist die Zahl doch weg und man braucht Sie ja um die Datei zu entschlüsseln.
    Ich hät dann gedacht, dass ich die Datei in einer Datenbank abspeichere und wenn man das programm öffnet, greif ich von dort aus auf Sie zu um die Zahlen für die Passwörter auszulesen
    Was ist daran anders als meine eine einzige geheime Zahl?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    msdn.microsoft.com/en-us/library/ctssatww.aspx
    "Das Bereitstellen eines identischen Startwerts für unterschiedliche Random-Objekte führt dazu, dass jede Instanz identische Sequenzen von Zufallszahlen erzeugt."
    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." Albert Einstein

    RushDen schrieb:

    Ich kenn nur random.next.
    Mach mal

    VB.NET-Quellcode

    1. Dim rnd = New Random(111)
    2. MessageBox.Show(rnt.Next.Tostring)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    RushDen schrieb:

    Ahh eine Zufallszahl bis 111!
    Nein.
    Du bekommst identische Sequenzen von Zufallszahlen. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!