Как мне исправить мои шифр-коды Цезаря для оператора цикла для шифрования? - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь создать базовый шифр Цезаря в Visual Basic 2010 Express (Консольное приложение), но всякий раз, когда он шифрует строку, он правильно шифрует первый символ и заменяет все остальные тем же зашифрованным символом.

Я перепробовал все, что мог придумать, и искал по всему интернету, и не могу найти способ работы базового консольного приложения, я знаю, что это можно сделать, как это было задано в качестве домашнего задания, и есть другие люди в классе, который прошел через эту проблему.

Sub Main()

    Dim Message As String
    Dim EncMessage As String = ""
    Dim counter As Integer = 0

    Do Until counter = 1     'This just repeats the program

        Console.Write("Please enter a string to encrypt: ")
        Message = Console.ReadLine

        Dim LetterArray() As Char = Message.ToCharArray

        For i = 0 To LetterArray.Length - 1
            EncMessage = EncMessage & Chr(Asc(LetterArray) + 3)     'Encrypts the characters one by one (i think this is where the issue is as it encrypts the first one correct but then just outputs the same character on top the correct amount of times)

'Это выражение if просто зацикливает символы X Y Z x y z на начало алфавита, поскольку оно предназначено только для шифрования букв

            If EncMessage = "{" Then     
                EncMessage = Chr(Asc(LetterArray) - 23)
            ElseIf EncMessage = "|" Then
                EncMessage = Chr(Asc(LetterArray) - 23)
            ElseIf EncMessage = "}" Then
                EncMessage = Chr(Asc(LetterArray) - 23)
            ElseIf EncMessage = "[" Then
                EncMessage = Chr(Asc(LetterArray) - 23)
            ElseIf EncMessage = "\" Then
                EncMessage = Chr(Asc(LetterArray) - 23)
            ElseIf EncMessage = "]" Then
                EncMessage = Chr(Asc(LetterArray) - 23)
            End If


        Next

        Console.WriteLine(EncMessage)
        Console.ReadKey()
        EncMessage = ""

    Loop

End Sub

Например, если я введу "колбасу", она выведет "vvvvvvv", но она должна вывести "vdtvdjh", потому что я хочу, чтобы она сдвигалась вперед на 3 символа. Пожалуйста, помогите, спасибо.

...