Сложность при кодировании Vigenère-шифра - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь следовать учебному пособию по созданию шифра Vigenère.
Однако при вводе любой клавиши я сталкиваюсь с ошибкой, так как она дает мне ошибку, говоря, что она выходит за пределы диапазона.

Может кто-нибудь помочь мне?

Function VigNere(ByVal Txtstring As String, ByVal key As String, ByVal encrypt As Boolean) As String
    Dim result As String = ""
    Dim temp As String = ""
    Dim j As Integer = 0

    For i As Integer = 0 To Txtstring.Length
        If Char.IsLetter(key(j)) Then
            If Txtstring(i) <> " " And Char.IsLetter(Txtstring(i)) Then
                If j = key.Length Then
                    j = 0
                End If
                temp += key(j)
                j += 1
            Else
                temp += Txtstring(i)
            End If
        Else
            j += 1
            If (j >= key.Length) Then
                j = 0
            End If
            i -= 1
        End If
    Next
    For i As Integer = 0 To Txtstring.Length - 1
        Dim N As Integer
        Dim NewAscii As Integer
        If Char.IsLetter(Txtstring(i)) Then
            If Char.IsLower(temp(i)) Then
                N = Asc(temp(i)) - Asc("a")
            ElseIf Char.IsUpper(temp(i)) Then
                N = Asc(temp(i)) - Asc("A")
            End If
            If encrypt Then
                NewAscii = N + Asc(Txtstring(i))
            Else
                NewAscii = 26 - N + Asc(Txtstring(i))

            End If
            If (NewAscii > Asc("z") And Char.IsLower(Txtstring(i))) Or (NewAscii > Asc("Z") And Char.IsUpper(Txtstring(i))) Then
                NewAscii -= 26
            End If
        Else
            NewAscii = Asc(Txtstring(i))

        End If
        result += Chr(NewAscii)

    Next
    Return result
End Function
...