2012-01-15 1 views
3

Я новичок в этой вещи шифрования, поэтому я не совсем уверен, как отформатировать мой вопрос.Режим MCRYPT генерирует косые черты

В любом случае я использую рамку называется kohana и для шифрования использует три вещи:

key, cipher, mode так что моя проблема в том, что, когда он кодирует некоторые строки иногда я получаю / шифрования, как этот fclzSev6DVfOk2Z/BSSi4dRYFn4t и я не хочу, чтобы я предполагал, что я должен изменить mode, который сейчас MCRYPT_MODE_NOFB, так что если я прав, какой режим мне нужно использовать?

+1

Почему вы не хотите слэш? –

+0

, потому что я использую зашифрованную строку в моем URL-адресе, и если есть косые черты, она создает дополнительные параметры для моего метода get и, в основном, все это becames messed up – Linas

+3

Тогда urlencode это, как и любая другая вещь, которая должна быть закодирована в URL-адресе , –

ответ

5

Как отмечает Фрэнсис Авила, зашифрованный вывод представляется Base64-encoded, поэтому он может содержать косые черты и знаки плюс (и, возможно, знаки равенства в конце) в дополнение к буквам и цифрам.

Вы можете смело заменить эти знаки чем-то еще, до тех пор, пока вы не забудете изменить их перед декодированием. Для этого удобно использовать PHP strtr() function. Например, вот как конвертировать строку из нормального Base64 в RFC 4648 с поддержкой URL-адреса Base64 и обратно:

$url_safe_base64 = strtr($base64_string, "+/", "-_"); 

$base64_string = strtr($url_safe_base64, "-_", "+/"); 
2

mode не имеет никакого отношения к тому, имеет ли сгенерированный вывод слеши, но указывает, какой режим шифрования должен использовать mcrypt. Если вы не знаете, что для него используется по умолчанию.

Причина, по которой косые черты заключаются в том, что метод Kohana encode() будет кодировать двоичный вывод из шифрования в base64, который может содержать косые черты.

Вы можете str_replace() косые черты с чем-то другим, но это, вероятно, создаст больше проблем и головных болей, чем оно решает.

+0

да, я думаю, если бы я заменил slashes позже, у меня было бы много проблем, декодировавших его – Linas