Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Почему не декодируется base64 из склеенных строк?

#javascript #java #c_sharp #base64


Доброго всем! 
Есть строка, которая выдает ошибку при конвертации: 


  0JTQsNGA0LjQvCDRgdC60LjQtNC60YMg0L3QsCDQvdC+0LLQvtCz0L4=0LTQvdC40LUg0L/QvtC00LDRgNC60Lgh


При чем отдельные ее части:


  0JTQsNGA0LjQvCDRgdC60LjQtNC60YMg0L3QsCDQvdC+0LLQvtCz0L4=


и


  0LTQvdC40LUg0L/QvtC00LDRgNC60Lgh


Декодируются нормально, но если их соединить, то ошибка. Проверял себя через декодер
Лебедева https://www.artlebedev.ru/decoder/advanced/

Как это можно решить?
    


Ответы

Ответ 1



Base64 конвертирует 3 байта в 4 символа, соответственно возникает проблема выравнивания длины байтов (набор байтов должен быть кратен 3), для чего и применяется символ (1 или 2) =, который как и написали в комментариях не может стоять в середине, а всегда в конце Ваша исходная строка Дарим скидку на новогодние подарки! должна конвертироваться в строку: 0JTQsNGA0LjQvCDRgdC60LjQtNC60YMg0L3QsCDQvdC+0LLQvtCz0L7QtNC90LjQtSDQv9C+0LTQsNGA0LrQuCE= которая, как нетрудно заметить слегка отличается от ваших строчек: 0JTQsNGA0LjQvCDRgdC60LjQtNC60YMg0L3QsCDQvdC+0LLQvtCz0L4= 0LTQvdC40LUg0L/QvtC00LDRgNC60Lgh Короче говоря, нельзя просто так и взять конкатенировать base64 строки

Комментариев нет:

Отправить комментарий