Я пытаюсь создать базовый шифр Цезаря в 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 символа. Пожалуйста, помогите, спасибо.