base64 -d декодирует, но говорит о недопустимом вводе

Вместо этого я переключился на использование «olddefconfig», похоже, это работает.

9
28.01.2021, 19:45
2 ответа

Если вы сделаете обратное, вы заметите, что строка не завершена:

$ echo '{"foo":"bar","baz":"bat"}' | base64
eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQo=

$ echo "eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQo=" | base64 -di
{"foo":"bar","baz":"bat"}

Выдержки из Почему кодировка base64 требует заполнения, если длина входных данных не делится на 3?

What are Padding Characters?

Padding characters help satisfy length requirements and carry no meaning.

However, padding is useful in situations where base64 encoded strings are concatenated in such a way that the lengths of the individual sequences are lost, as might happen, for example, in a very simple network protocol.

If unpadded strings are concatenated, it's impossible to recover the original data because information about the number of odd bytes at the end of each individual sequence is lost. However, if padded sequences are used, there's no ambiguity, and the sequence as a whole can be decoded correctly.

18
18.03.2021, 22:33

Инструмент линии команды -требователен к наличию символов заполнения. Эта строка имеет длину 34 символа, поэтому в конце должно быть два знака =в качестве дополнения.

$ echo "eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQ==" | base64 -di; echo
{"foo":"bar","baz":"bat"}
13
18.03.2021, 22:33

Теги

Похожие вопросы