Encrypt VB

Pagina: 1
Acties:
  • 386 views

Acties:
  • 0 Henk 'm!

  • TheAncientDovah
  • Registratie: Februari 2015
  • Laatst online: 29-09 13:28

TheAncientDovah

Meester in de kunsten van...

Topicstarter
Ik ben vandaag aan iets kleins begonnen. Hobby projectje, maar het lukt niet echt....
De output is niet wat het zou moeten zijn. Iemand enig idee waarom?

De code is in Visual Basic.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub
    Private Sub Crypt_Click(sender As Object, e As EventArgs) Handles Crypt.Click
        Dim KeyString As String
        KeyString = Key.Text
        Dim KeyLen As Integer
        KeyLen = Len(KeyString)
        Dim Message As String
        Message = Input.Text
        Dim MessageLen As Integer
        MessageLen = Len(Message)
        Dim CodeSet() As String
        CodeSet = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", ",", "?", "!", "/", "-", "(", ")", "'", "=", "+", "*", "%"}
        For index As Integer = 1 To KeyLen
            Array.Resize(CodeSet, CodeSet.Length + 1)
            CodeSet(CodeSet.Length - 1) = Mid(KeyString, index, index) & "x"
        Next
        Dim EncryptedMessage As String
        EncryptedMessage = ""
        Dim Frequency As Integer
        Frequency = KeyLen * 2
        For index As Integer = 1 To MessageLen
            Dim CharacterIndex As Integer
            CharacterIndex = Array.IndexOf(CodeSet, Mid(Message, index, index))
            EncryptedMessage = EncryptedMessage & CodeSet(CharacterIndex + Frequency)
        Next
        Output.Text = EncryptedMessage
    End Sub
End Class


Afbeeldingslocatie: http://i.imgur.com/4A8mm4v.png

Meester in de kunsten van...


Acties:
  • 0 Henk 'm!

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 16:23
In de tweede loop doe je voor iedere positie in de Message een lookup in je CodeSet op basis van Array.IndexOf. Het probleem zit hem in de Mid()-functie en met name de laatste parameter (length).

Een kant-en-klare oplossing ga ik hier niet vermelden, ik schat in dat je het hiermee moet kunnen redden :)

Verdere analyse:

Alleen voor de eerste en de laatste positie geeft Mid(str, index, index) 1 karakter terug, voor alle andere posities meerdere karakters en de CodeSet-array bevat alleen enkele karakters. Vandaar het vreemde resultaat (in de vorm ABBBBBBBBBC).

Hoe kun je dit zelf oplossing/uitvinden? Dat is toch echt met debuggen. Plaats een breakpoint (F9) op een regel en start het programma. Gebruik de Autos (venster is al zichtbaar) om de inhoud van de variabelen na te gaan. Selecteer expressies en toets SHIFT-F9 om tussen-berekeningen te bekijken. Kijk naar het gedrag van je code en ga in iedere stap (F10/F11) na of de code nog voldoet aan hetgeen je verwacht.

Voor wat betreft je vraagstelling: Alleen "De output is niet wat het zou moeten zijn." met een plaatje is echt te mager. Wat wil je dat de functie doet? Waar heb je de functie op gebaseerd? Wat had je wel verwacht als output? Waar heb je al op gezocht? Vragen die je bij voorbaat kunt stellen en in je openingspost had kunnen verwerken.

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:33

.oisyn

Moderator Devschuur®

Demotivational Speaker

TheAncientDovah schreef op zondag 11 oktober 2015 @ 22:44:
De output is niet wat het zou moeten zijn. Iemand enig idee waarom?
Euh ja, zo werkt dat hier dus niet. Je geeft echt compleet geen informatie over wat je nou aan het doen bent en wat jij dan verwacht dat die output moet zijn. Ik gooi je topic dan ook op slot. Je staat vrij het op nieuw te proberen, zolang je de QuickStart guide in ogenschouw neemt.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Dit topic is gesloten.