VB.NET Xor + Mod - PullRequest
       16

VB.NET Xor + Mod

0 голосов
/ 19 октября 2018

Я очень плохо знаком с языком VB.NET, поэтому некоторые вещи я все еще изучаю, и мне здесь нужна помощь.Поэтому я буду признателен за любые рекомендации.

Я создаю приложение для шифрования XOR, в котором есть ключ, ввод и вывод.Процесс выглядит так: Key XOR Input, и результат будет отображаться как выход.Хотя мне удалось успешно выпустить работающие коды для этой части.

Однако сейчас мне нужно сделать продолжение этой части.Мне нужно, чтобы выход выходил в диапазоне ASCII 33 - 126 (DEC).

Я ничего не сделал с точки зрения кодирования, так как не могу найти правильного руководства.Кроме того, я не знаю, с чего начать, за исключением того, что здесь используется некоторая математическая логика (MOD).Спасибо.

Я использую Visual Studio (2017) и вот мой код:


Публичный класс Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim key As String
    Dim input As String
    Dim output As String
    Dim keyCounter As Integer = 0
    Dim length As Integer

    key = TextBox1.Text
    input = TextBox2.Text
    length = key.Length

    For Each letter As Char In input
        output = output & Chr(Asc(letter) Xor Asc(key.Chars(keyCounter)))

        If keyCounter = length - 1 Then
            keyCounter = 0

        Else
            keyCounter += 1

        End If

    Next

    TextBox3.Text = output

End Sub

Конечный класс

1 Ответ

0 голосов
/ 19 октября 2018

Математика довольно проста.Чтобы ограничить число в диапазоне с помощью модуля по модулю, начните с вычисления количества чисел в диапазоне (включительно):

126 - 33 + 1 = 94

Затем возьмите свое значение и рассчитайте модуль по длине и добавьте нижнее значениедиапазона (33), чтобы заставить его перейти от 33-126 вместо 0-93:

(value Mod 94) + 33

В качестве альтернативы, если вам нужны числа, которые уже находятся в диапазоне от 33-126 до не изменение, вы можете сначала вычесть нижнее значение:

((value - 33) Mod 94) + 33
...