Открытая функция Visual Basic .Net декодирует однострочную процедуру перед ее выполнением - PullRequest
0 голосов
/ 30 сентября 2018

Я столкнулся с проблемой с функцией и процедурой, когда экспериментировал с некоторым кодом, как показано ниже:

    Module mod1
        Class ExampleApp

            Dim textvalue as String = "dGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgdGV4dC4="
            Dim string1 as String = "Convert.FromBase64String(input)"

            Public Function DecodeB64(ByVal input As String) As String

                Return System.Text.Encoding.UTF8.GetString(string1)

            End Function

        End Class
    End Module

Вопрос в том, возможно ли закодировать инструкцию внутри публичной функции перед ее выполнением?

Я видел несколько случаев, когда они реализовывали это на PHP Scripts, где весь сценарий кодируется до его выполнения.Я старался изо всех сил применять ту же концепцию, сохраняя «Convert.FromBase64String (input)» для строковой переменной, но я сталкиваюсь с такой проблемой:

Значение типа 'String' не можетбыть преобразованным в '1-мерный массив байтов'

Когда я не применяю эту концепцию, текст в base64 будет декодирован плавно.Моя главная цель состоит в том, чтобы я как можно больше скрывал утверждение или группу утверждений.В чем проблема в этой ошибке?

1 Ответ

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

У вас есть 2 ошибки в примере кода:

  • Во-первых, вы должны знать, что Convert.FromBase64String() возвращает массив Byte(), следовательно, вы можете 'присвойте его строковой переменной / полю.

  • Во-вторых, Encoding.GetString() требует массив Byte() в качестве параметра, но вы передаете ему строку, следовательно, InvalidCastException произошло.

Правильное их использование должно быть таким:

Public Function DecodeB64(ByVal input As String) As String

    ' make sure the input string is Base64 formatted
    Dim bytearray As Byte() = Convert.FromBase64String(input)

    ' decoding from byte array
    Return System.Text.Encoding.UTF8.GetString(bytearray)

End Function

' usage
Dim textvalue as String = "dGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgdGV4dC4="
Dim result As String = DecodeB64(textvalue)

Рабочий пример: .NET Fiddle demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...