2011-07-20 49 views
1

如果我運行Convert.FromBase64String(「test」),我得到的錯誤是它的無效長度。我試圖轉換爲一個字節數組,所以我可以加密它,但在較短的字符串它給長度錯誤。我用'='嘗試了rpadding,但無論多少次我都沒有做任何事情。.NET FromBase64String length

我有什麼選擇呢?

回答

7

如果您有需要存儲二進制文本數據:

  • 您將字符串轉換爲byte []通過Encoding.GetBytes(),例如Encoding.UTF8.GetBytes()
  • 您通過Encoding.GetString()將這些文本數據轉換回字符串。這需要通過此編碼的二進制文本數據(不是任意二進制)

如果您有二進制數據需要存儲爲字符串;

  • 你轉換任意二進制與Convert.ToBase64String()
  • 你轉換這樣的字符串爲二進制與Convert.FromBase64String()的字符串;這要求字符串是一個有效的base-64字符串(不是任意字符串)

所以:看編碼。

+0

它看起來像包括逗號和引號。我將多段文字連接在一起並製作一個csv字符串。然後我把它發送到服務器,在那裏我用逗號分開然後解密。這似乎是它的工作。 – user441521

+0

好的,我明白了。我使用編碼轉換爲字節,所以它可以加密,然後我從加密字節中取出並使用ToBase64String(),然後我將它作爲csv字符串發送到服務器,並在另一端將其反轉。 謝謝 – user441521

+0

@ user441521:如果您的數據只是「文本」(即,不包含任何用於發送數據的協議保留的字符),或者您使用知道如何發送數據的庫已經處理編碼,那麼就沒有必要對你的字符串進行編碼和解碼。你的問題並沒有真正清楚你想要完成什麼。至於使用加密,如果您正在加密文本,您通常會在解密之前在加密和解碼之後應用編碼*。 – Brian

6

Base64是一種將字節序列轉換爲特殊格式的字符串的方法。 "test"不是Base64字符串。

您正在尋找Encoding.UTF8.GetBytes("test")

+0

而且它不是Base64字符串的原因之一是因爲預期長度不正確:) – markt