Публиковать данные пропущенных символов в base64 - PullRequest
0 голосов
/ 15 апреля 2011

Я пытаюсь отправить сообщение в свой php-скрипт из приложения C #, но base64_decode() продолжает сбой.

Это строка, которую пытается отправить мой пост:

stWC3F34AboxsfjbxAWtGU8WUHIombDMd6Z4WXxyOae0 + NlISFHVEATxjE8EFKKMkDnQe0oFu8AvQM9lRaSSMgjYnyZvhXB8EiQDImgrsTmgvwsIeu4qZiW2O6cK4oaPUJIIFnEDlNCstc4s1mzseq0zv0xYPy3tRqbWPXVV9jv9BZiMFGxeVD + OKV / mO0NkVP4UVUMcFOXVCKh5HslVZv59lEqa5C230HSyv17 / W0G1e7q4tBxWEhUwCfbldNtk

и когда скрипт получает его, "+" заменяются на "", поэтому я использую str_replace (), чтобы прочитать их, а затем передать вывод в base64_decode (), но он продолжает возвращать false.

Эта строка передается base64_decode() ДО замены "" на "+"

stWC3F34AboxsfjbxAWtGU8WUHIombDMd6Z4WXxyOae0 NlISFHVEATxjE8EFKKMkDnQe0oFu8AvQM9lRaSSMgjYnyZvhXB8EiQDImgrsTmgvwsIeu4qZiW2O6cK4oaPUJIIFnEDlNCstc4s1mzseq0zv0xYPy3tRqbWPXVV9jv9BZiMFGxeVD OKV / mO0NkVP4UVUMcFOXVCKh5HslVZv59lEqa5C230HSyv17 / W0G1e7q4tBxWEhUwCfbldNtk

Это строка, которая передается base64_decode() ПОСЛЕ замены "" на "+"

stWC3F34AboxsfjbxAWtGU8WUHIombDMd6Z4WXxyOae0 + NlISFHVEATxjE8EFKKMkDnQe0oFu8AvQM9lRaSSMgjYnyZvhXB8EiQDImgrsTmgvwsIeu4qZiW2O6cK4oaPUJIIFnEDlNCstc4s1mzseq0zv0xYPy3tRqbWPXVV9jv9BZiMFGxeVD + OKV / mO0NkVP4UVUMcFOXVCKh5HslVZv59lEqa5C230HSyv17 / W0G1e7q4tBxWEhUwCfbldNtk

И из того, что я прочитал, единственная причина, по которой он должен возвращать false, состоит в том, что строка содержит символы вне алфавита base64, но, похоже, является допустимой строкой base64.

Любая помощь приветствуется. Если я не смогу это исправить, я просто начну публиковать шестнадцатеричные строки вместо base64.

Ответы [ 3 ]

2 голосов
/ 15 апреля 2011

Вы делаете URLEncode для строки перед ее отправкой? Это должно исправить проблему со знаком плюс.

1 голос
/ 16 апреля 2011

Вам также необходимо заменить любые символы косой черты (/), которые представляют значение 63 в стандартной кодировке base64. Обычно используется для преобразования + в - и / в _.

См. http://en.wikipedia.org/wiki/Base64#URL_applications

Кроме того, некоторые декодеры base64 требуют, чтобы строка дополнялась символами =, чтобы длина строки была кратна 3. Я не знаю, требует ли PHP base64_decode этого. См. Связанную статью Wikipedia для информации о дополнении.

0 голосов
/ 15 апреля 2011

Попробуйте использовать urlencode в php и HttpServerUtility.UrlDecode в C #

РЕДАКТИРОВАТЬ: Извините, вы хотите, наоборот:

HttpServerUtility.UrlEncode в c # и urldecode в php

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