Режим MCRYPT генерирует косые черты - PullRequest
3 голосов
/ 15 января 2012

Я новичок в этом шифровании, поэтому я не совсем уверен, как отформатировать мой вопрос.

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

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

Ответы [ 2 ]

5 голосов
/ 16 января 2012

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

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

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

$base64_string = strtr( $url_safe_base64, "-_", "+/" );
2 голосов
/ 15 января 2012

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

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

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

...