У меня проблема с преобразованием из строки base-64 в обычный, читаемый текст. Я провел некоторое исследование и обнаружил, что строки базы 64 должны иметь длину, кратную 4. Поэтому я использовал padRight, чтобы дать ему допустимую длину, но я все равно получаю ту же ошибку. Например, я вхожу в «привет», и он кодируется как «⚫aGk ====», который кажется мне 8 символов (что, очевидно, кратно 4). Когда я пытаюсь прочитать его, он читается с длиной 1. Я также использую расширение пользовательского файла, которое я только что назвал «.bgs». Я не уверен, что это что-то делает. Запись в этот файл как строка base64 и чтение/декодирование - это единственное, что я пытаюсь сделать.Недопустимая длина VB.net для базового 64-символьного массива или строки
Вот мой код:
Public Class Form1
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Me.Close()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using bs As New BinaryWriter(File.Open("saveFile.bgs", FileMode.Create))
Dim originText As String = TextBox1.Text
Dim cipherText As String
Dim byteArray As Byte() = System.Text.Encoding.UTF8.GetBytes(originText)
cipherText = Convert.ToBase64String(byteArray)
Dim realLength As Integer = cipherText.Length() + 1
Dim len As Integer = (realLength Mod 4)
If (len > 0) Then bs.Write(cipherText.PadRight(realLength + (3 - len), "="))
bs.Close()
End Using
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Using bs As New BinaryReader(File.Open("saveFile.bgs", FileMode.Open))
Dim cipherText2 As String = bs.Read()
Dim originText2 As String = "Failed"
TextBox2.Text = cipherText2.Length() 'reports length of 1
Try
Dim byteArray2 As Byte() = Convert.FromBase64String(cipherText2)
originText2 = System.Text.Encoding.UTF8.GetString(byteArray2)
Catch ex As Exception
End Try
'TextBox2.Text = originText2
End Using
End Sub
Любая помощь очень ценится!
Обновление: он выглядит как первый символ (точка в приведенном выше примере), замеченный в файле .bgs, когда я открываю его с помощью блокнота, управляет содержимым cipherText2, которое является просто числом, объясняющим, почему длина низкий.
Только то, что мне нужно. Огромное спасибо! – ArbitraryUser