Неоднозначность кодирования MIME base64 в rfc2045 - PullRequest
0 голосов
/ 24 ноября 2018

В соответствии с кодировкой MIME base64, указанной в rfc2045, закодированные в base64 данные должны быть разбиты на строки не более 76 символов.

При декодировании все символы, не принадлежащие алфавиту base64, должны игнорироваться.

Как определить конец данных, закодированных в MIME base64?

1 Ответ

0 голосов
/ 24 ноября 2018

Когда вы нашли начало закодированного в base64 объекта, всегда должна быть возможность найти конец, не декодируя его.Примеры:

  • Возможно, у вас есть сообщение электронной почты с кодировкой верхнего уровня base64.В этом случае конец base64 - это конец тела.Конец тела распознается не какой-либо внутренней структурой, а одиноким . в конце SMTP DATA.
  • Если вы читаете сообщение электронной почты из файла mbox вместоПолучая его по SMTP, формат mbox отвечает за сообщение о том, где находится конец сообщения.
  • Если у вас есть многочастное тело электронной почты с одной частью base64, вы можете сначала отсканировать составную границу, чтобы найтиконец части тела, затем передайте всю часть тела декодеру base64.
  • Точно так же, если у вас есть кодированный в RFC2047 заголовок с base64, вы можете сначала найти завершающий =?, а затем передать закодированныйчасть к декодеру base64.

Поскольку терминаторы уже определены до начала декодирования base64, декодер никогда не видит терминатор, поэтому правило «символы, не принадлежащие алфавиту base64» не имеет отношения.

2 шага нахождения конца данных base64 и декодирования могут быть объединены в один циклвход для эффективности.Но концептуально они являются отдельными.

...