кодировка base64 альтернатива подчеркиванию - PullRequest
0 голосов
/ 28 июля 2011

Мы используем безопасную вариацию кодировки base64 для файловой системы / URL, такую, что:

"=" replaced with ""  
"+" replaced with "-"  
"/" replaced with "_"  

Сейчас мы используем хранилище BLOB-объектов Azure, которое не позволяет использовать «_» в именах контейнеров.

Мы кодируем base64 Guid . Если я должен был заменить подчеркивание, скажем, «0», могу ли я столкнуться с риском?

Обновление

Не уверен, почему понизить голос. Но чтобы уточнить.

Почему бы просто не использовать Guid?

  1. Guid - это идентификатор объекта в моем приложении. Поскольку пути являются общедоступными, мне не очень нравится показывать Id, поэтому я и кодирую его.
  2. Я хочу более короткие и дружелюбные пути. Вопреки одному из комментариев ниже, кодировка base 64 НЕ длиннее:

    Guid: 5b263cdd-2bc2-485d-83d4-81b96930dc5a
    Кодировка Base64: 3TwmW8IrXUiD1IG5aTDcWg == (еще короче после удаления ==)

(Другое) Обновление

Кажется, есть некоторая путаница в том, чего я пытаюсь достичь (извините за это). Вот короткая версия.

  • У меня есть Guid, который представляет сущность в моем приложении.
  • Мне нужно создать общедоступный каталог для сущности (через URL).
  • Я не хочу использовать Guid в качестве имени каталога по причинам выше.
  • Я ранее спрашивал на SO о том, как я могу создать более дружелюбный смотря URL который гарантировал уникальность и не выставлял оригинальный гид. Предложение было в кодировке Base64.
  • До недавнего времени это работало нормально, когда нам нужно было использовать BLOB-объект Azure. хранилище, которое не допускает подчеркивания "_" в своем каталоге (Контейнер) имена.

Вот где я нахожусь.

Ответы [ 3 ]

7 голосов
/ 28 июля 2011

Просто "закодируйте" GUID в base16 . Единственные символы, которые он использует, это 0123456789ABCDEF, который должен быть безопасным для большинства целей.

var encoded = guid.ToString("N");
1 голос
/ 28 июля 2011

Базовый набор из 64 символов:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=

Таким образом, вы не можете использовать 0, поскольку он уже используется.

0 голосов
/ 28 июля 2011

Вместо взятия base64 и изменения 4 символов вы можете кодировать свои данные в base60.

Ваш список символов base60 не содержит 4 символа, которые вам не нравятся, поэтому вам не нужно ничего заменять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...