Member 11905957 Ответов: 1

Значение типа '1-мерный массив байтов' не может быть преобразовано в 'system.security.cryptography. icryptotransform'


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

Что я уже пробовал:

Private Sub enkripfile(ByVal inputfile As String, ByVal outputfile As String, ByVal direction As aksikripto)
        'Dim fsinput As New FileStream(inputfile, FileMode.Open, FileAccess.Read)
        Dim fbytes As Byte()
        Dim ebytes As Byte()
        Dim fsoutput As New FileStream(outputfile, FileMode.Create, FileAccess.Write)
        Dim cs As New CryptoStream(fsoutput, ebytes, CryptoStreamMode.Write)
        Select Case direction
            Case aksikripto.enkrip
                bf.Key = System.Text.Encoding.UTF8.GetBytes("akrie")
                fbytes = File.ReadAllBytes(inputfile)
                ebytes = bf.EncodeBytes(fbytes)
                'Dim bfencrypt As ICryptoTransform = bf.EncodeBytes()
                'mycryptostream = New CryptoStream(fsoutput, bf.EncodeBytes, CryptoStreamMode.Write)

        End Select
        

    End Sub

Richard Deeming

Ошибка довольно очевидна - второй параметр конструктор CryptoStream[^] должен быть экземпляром класса, реализующего интерфейс ICryptoTransform[^].

Вы передаете массив байтов. Массив байтов не реализует этот интерфейс.

Member 11905957

Итак, как реализовать ICryptoTransform в конструкторе CryptoStream, сэр? пожалуйста, помогите мне, сэр, спасибо..

Member 11905957

спасибо, сэр, что значит экземпляр класса, сэр? извините за моего новичка

1 Ответов

Рейтинг:
9

OriginalGriff

Цитата:
что ты имеешь в виду экземпляр класса, сэр? извините за моего новичка
Если вы не знаете, что такое экземпляр, то вы пытаетесь бежать, прежде чем сможете ходить: вам нужно вернуться к началу и начать понимать основы.

Давайте на минутку поговорим о машинах. Автомобиль-это транспортное средство с четырьмя колесами, которым вы управляете, манипулируя его органами управления. Но вы не можете ездить на машине в магазины, потому что автомобиль - это общее понятие, а не конкретное транспортное средство. Вы можете управлять "этой машиной", или" этой машиной", или" вашей машиной "(или даже" моей машиной", если я дам вам ключи), потому что каждая из этих" переменных " ссылается на конкретный автомобиль. "Ваша машина" - синий "Форд", регистрационный номер" АВС 123", а" моя машина "- красный"Мерседес", регистрационный номер "XYZ 456". каждый из этих транспортных средств является пример из общего класса автомобилей.
Поэтому для того, чтобы ездить в магазины, вам нужно определить конкретный экземпляр автомобиля, который вы уполномочены (по владению ключами) водить. В реальном мире вы приобретаете этот экземпляр, попрошайничая, одалживая, покупая или крадя определенный автомобиль.

В компьютерных терминах вам нужно то же самое-экземпляр класса, и здесь все гораздо яснее: единственный способ получить экземпляр класса Car - это создать его с помощью New ключевое слово:
Dim myCar As new Car("Mercedes", Color.Red, "XYZ 456")

Когда вы создаете свой Криптоп, вы передаете ему массив байтов, когда он специально требует чего-то другого: Конструктор CryptoStream (Stream, ICryptoTransform, CryptoStreamMode) (System.Безопасность.Криптография)[^]
Вы найдете пример того, как его использовать, в описании класса: Класс CryptoStream[^]
Но серьезно: если вы не знаете основ, то вам следует прекратить то, что вы делаете, и вернуться к их изучению в первую очередь, иначе вы ужасно запутаетесь.