Зачем использовать двоичное число 64 в base64, а не весь набор ASCII? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь понять, почему мы использовали бы Base64 для преобразования двоичных данных в символы ASCII, а не просто преобразовывали их прямо в ASCII. В каждом вычислении Base64, которое я видел, вы либо начинаете с символов ASCII, либо начинаете с двоичных данных, которые преобразуются в ASCII в процессе преобразования его в Base64.

Мой вопрос: Почему бы просто не оставить его в ASCII, а не преобразовать его в подмножество Base64?

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

1 Ответ

0 голосов
/ 25 июня 2019

Есть несколько причин.Я думаю, что несколько наиболее важных причин:

  • 64 - это хорошее число, для преобразования байтов в base64 и обратно требуется меньше вычислений (фактически просто сдвигов).Нет умножения или деления.Легко и быстро, особенно без чрезмерной нагрузки на почтовые серверы.Также легко рассчитать требуемый выходной буфер.

  • Было выбрано безопасное значение.Не все символы в ASCII безопасны или в ISO.В некоторых странах изменения $ или & или ~.Не все наборы символов имеют {.ASCII изменил определение нескольких символов (например, позиция @).Пробел должен быть разрешен (но вне семантического использования), то же самое с управляющими символами.Не думайте, что ASCII были доступны на каждом компьютере или на почтовых серверах.На самом деле, версия ISO C 1990 поддерживает компьютеры без всех символов ASCII.

  • это не должно мешать другим разделителям (заголовкам электронной почты, URL и т. Д.), Где они должны были использоваться,поэтому без кавычек, не :.К сожалению, в Интернете используются / и =, но поскольку было много свободных персонажей, решить проблему было несложно, не изменяя все.

...