2016-12-21 2 views
1

Строка base64 ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM= при декодировании 106741348187B6727213596553EA3BE8A9C3. Когда я кодирую 106741348187B6727213596553EA3BE8A9C3 на base64, результат равен MTA2NzQxMzQ4MTg3QjY3MjcyMTM1OTY1NTNFQTNCRThBOUMz.Кодировка base64

Я уверен, что некодированная строка является входом для первой строки base64, потому что некодированная строка состоит из идентификатора пользователя и присоединенного токена авторизации. Поэтому, если декодирование из base64 дает мне эти две конкретные строки, но кодирование приводит к чему-то, отличному от строки, из которой они были декодированы, как именно была введена некодированная строка, закодированная в строку base64?

ответ

1

Проблема в том, что результатом декодирования вашего ввода является не 106741348187B6727213596553EA3BE8A9C3; это \01067\041348187B6727213596553EA3BE8A9C3. Обратите внимание на два нулевых байта, которые, предположительно, удаляются, прежде чем перекодировать их.

Если вы декодировать и перекодировать без зачистки этих аннулирует, вы получите вход обратно:

$ echo "ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=" | base64 -d | base64 
ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM= 

Чтобы лучше понять, что происходит, посмотрите на фактические байты выводятся на декодере:

$ echo "ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=" | base64 -d | od -c 
0000000 \0 1 0 6 7 \0 4 1 3 4 8 1 8 7 B 6 
0000020 7 2 7 2 1 3 5 9 6 5 5 3 E A 3 B 
0000040 E 8 A 9 C 3 
0000046 
+0

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

+0

Хорошо, поэтому просмотр результата помог. Мой метод декодирования не показывал нулевой байт. –

+0

Спасибо. Это поучительно для меня, так как я также не понимал, что у bash есть эта функциональность. –

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