2016-05-26 3 views
-4

я, кажется, всегда получаю неправильный вывод при декодировании этого base64 строку в vb.net (я думаю, что его base64? Это действительно выглядит как это)неправильный выход при декодировании base64 строку

им с помощью функции frombase64string

и я сделал это, как этот

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

, но я всегда получаю этот выход

バ䃐⤂ؐ 

, который не кажется правильным

+0

Мы не можем быть уверены *, что вы ожидаете от этого. Вы сравнили его с источником non-base64 или попробовали использовать онлайн-конвертеры, чтобы проверить свои результаты? Функция 'FromBase64String' работает нормально - если вы получаете неверные данные, вы либо используете неправильную кодировку, либо имеете неправильную строку base64. – vbnet3d

+4

*** Как должно выглядеть? *** – Codexer

+0

Вы должны знать, какой источник был создан. Возможно, это был массив байтов из метода шифрования, и в этом случае его декодирование не принесет ничего полезного. – Plutonix

ответ

0

Это String может быть практически любым. Это может быть результат алгоритма шифрования, например sha *. Ваша ошибка в том, что вы предполагаете, что это must be base64 т.к. это способный be.

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

1

0DDQQL3uAikQBgAAc4cqK4WnSQBg4SAgExEAAF3BAmAILYojRgkBhUrBAgEDRw ==

Похоже, Base64, длина правильный размер, персонажи принадлежат к характеру Base64 гарнитуром и отстающей «==» является разумным. Конечно, это может быть не кодировка Base64.

Base64 результаты декодирования в:

D0 30 D0 40 BD EE 02 29 10 06 00 00 73 87 2A 2B 85 А7 49 00 60 E1 20 20 13 11 00 00 5D С1 02 60 08 2D 8A 23 46 09 01 85 4A C1 02 01 03 47

Теперь проблема, это не строка символов, это массив из 8-битных байтов. Таким образом, он не может отображаться как символы. 0x00 байт будет сигнализировать конец строки методу печати, а игнорируемые символы могут игнорироваться, отображаться со специальными символами или несколько байтов могут отображаться как обязательные байтовые символы юникода. Единственный гарантированный и обычный дисплей в шестнадцатеричном виде, как указано выше.

Смежные вопросы