簡體   English   中英

解碼 base64 字符串時輸出錯誤

[英]wrong output when decoding base64 string

在 vb.net 中解碼這個 base64 字符串時,我似乎總是得到不正確的輸出(我認為它的 base64?它真的看起來像)

我使用 frombase64string 函數

我是這樣做的

  Dim b64str = "0DDQQL3uAikQBgAAc4cqK4WnSQBg4SAgExEAAF3BAmAILYojRgkBhUrBAgEDRw=="
        Dim i As String = System.Text.Encoding.Unicode.GetString(Convert.FromBase64String(b64str))
        MsgBox(i)

但我總是得到這個輸出

バ䃐⤂ؐ

這似乎不對

0DDQQL3uAikQBgAAc4cqK4WnSQBg4SAgExEAAF3BAmAILYojRgkBhUrBAgEDRw==

它看起來像Base64,長度是正確的大小,字符屬於Base64字符集並且尾隨“==”是合理的。 當然,它可能不是 Base64 編碼。

Base64 解碼結果為:

D0 30 D0 40 BD EE 02 29 10 06 00 00 73 87 2A 2B 85 A7 49 00 60 E1 20 20 13 11 00 00 5D C1 02 60 08 23 0 4 0 7 A 2 3 0 4 0 8 A

現在問題來了,這不是一個字符串,它是一個 8 位字節的數組。 因此它不能顯示為字符。 0x00 字節將向打印方法發出字符串結束的信號,不可表示的字符可能會被忽略,顯示為特殊字符或多個字節可能顯示為必須字節的 unicode 字符。 唯一保證和通常的顯示是十六進制的,如上所示。

String幾乎可以是任何東西。 它可能是加密算法的結果,例如 sha*。 你的錯誤是你認為它必須是 base64,因為它可能是。

它可能是 base64 是一個有效的觀察,因此運行該函數是完全有效的事情,但是您必須根據結果確定它是 base64 還是其他基於特定邏輯的東西,這是問題中沒有描述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM