Подтвердить что ты не робот

Более короткий php-шифр, чем md5?

Для множества глупых причин максимальная длина данной переменной формы, которую мы отправляем на внешний сервер, составляет 12 символов.

Я хотел скрыть это значение с помощью md5, но, очевидно, с 12 символами, которые не будут работать. Есть ли шифр с уже созданной PHP-функцией, которая приведет к чем-то 12 символов или меньше?

Безопасность и целостность шифрования здесь не очень важны. Моей последней целью является просто написать функцию, которая перемещает каждую букву вверх или вниз по значению ascii по x. Таким образом, цель состоит не в том, чтобы скрыть его от специалиста по криптографии, а просто для того, чтобы не публиковать его в виде простого текста, поэтому нетехнический рабочий, смотрящий на него, не будет знать, что это такое.

Спасибо за любой совет.

4b9b3361

Ответ 1

Это дополнение к этому ответу.

В ответе предлагается взять первые двенадцать символов из 32-символьного представления md5. Таким образом, 20 символов информации будут потеряны - это приведет к более сильным конфликтам .

Вы можете уменьшить потерю информации, взяв первые двенадцать символов 16-символьного представления (необработанная форма):

substr(md5($string, true), 0, 12);

Это будет поддерживать 75% данных, тогда как использование формы 32 char поддерживает только 37,5% данных.

Ответ 2

возможно, это поможет вам сгенерировать строку 12 char, которую вы можете передать в URL-адресе, не увеличивая риск столкновений

substr(base_convert(md5($string), 16,32), 0, 12);

Ответ 3

Если вам нужен только хэш, вы все равно можете использовать первые 12 символов из хеша md5.

substr(md5($yourString), 0, 12);

Ответ 4

Попробуйте crc32(), возможно?

Ответ 5

Все ответы предполагают отказ от некоторых данных (более высокая вероятность столкновения), но похоже, что использование базового преобразования - лучший подход: например как описано здесь http://proger.i-forge.net/Short_MD5/OMF

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

Ответ 6

Мне нужно включить это предложение, поскольку я должен предположить, что вы контролируете script, что ваше зашифрованное значение отправлено....

Я также должен предположить, что вы можете создать много полей форм, но они не могут иметь длину более 12 символов.

Если бы это произошло, не могли бы вы просто создать более одного поля формы и распространить строку md5 на несколько скрытых полей?

Вы можете просто разделить строку md5 на куски 8 и отправить каждый кусок в поле скрытой формы, а затем объединить их на другом конце.

Просто мысль...