我有一個從base-64字符串轉換爲正常,可讀文本的問題。我做了一些研究,發現base 64字符串的長度必須是4的倍數。所以我用padRight給它一個有效的長度,但是我一直得到相同的錯誤。例如,我輸入「hi」,它編碼爲「⚫aGk====」,這對我來說似乎有8個字符(顯然是4的倍數)。當我嘗試閱讀它時,它的長度爲1. 我還使用了一個自定義文件擴展名,我只是將其稱爲「.bgs」。我不確定這是否會做任何事情。作爲base64字符串寫入該文件並讀取/解碼是我嘗試做的唯一事情。對於基本64字符數組或字符串VB.net無效的長度
這裏是我的代碼:
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