- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
... Я ищу способ сокращения длины результата работы функции md5() с целью экономии пространства под хранение этих результатов. По умолчанию данная функция генерирует строку, состоящую из 32 символов. Существует ли проверенный и безопасный способ уменьшение этой строки, например, до 16 символов (а лучше до 10)? Под "безопасный" я имею в виду минимизацию вероятности возникновения коллизий....
а прочитать описание самой функции времени нет?
string md5 ( string $str [, bool $raw_output] )
Вычисляет MD5 хэш строки str используя » алгоритм MD5 RSA Data Security, Inc. и возвращает этот хэш. Хэш представляет собой 32-значное шестнадцатеричное число. Если необязательный аргумент raw_output имеет значение TRUE, то возвращается бинарная строка из 16 символов.
Замечание: Необязательный аргумент raw_output был добавлен в PHP 5.0.0 и по умолчанию равен FALSE
а прочитать описание самой функции времени нет?
А у вас явно не нашлось времени прочитать весь топик ;)
А у вас явно не нашлось времени прочитать весь топик ;)
конкретный вопрос - конкретный ответ, но таки да - не нашлось ;)
DiAksID, я повторюсь, но, к сожалению, речь идет не о PHP, а о Javacript-функции, в которой нет подобных входных параметров. То есть, регулировать опции вывода у меня нет возможности. Результатом является только строка из 32 символов.
Вот сама функция, которую я использую: http://pastebin.com/20RCT4Wb
Других вариантов ее реализации (на Javascript) с указанными Вами входными параметрами мне найти не удалось.
Замечу, что вопрос об уменьшении длины md5-хэша в Интернете достаточно популярный. Вот только другие ответы, как банальное усечение хэша до нужной длины, до сих пор не встречаются.
попробуйте преобразовать в 32-ричную систему, или 64-ричную
... Других вариантов ее реализации (на Javascript) с указанными Вами входными параметрами мне найти не удалось.
ну если "сильно припёрло" - аякс в руки и вперёд. оно конечно криво по самое немагу, но ... хотя возможно ожидаемые "плюсы" уйдут глубоко в минус...
попробуйте преобразовать в 32-ричную систему, или 64-ричную
Благодарю Вас!
Правда, мне кажется, что найти подобный алгоритм (16 -> 32) окажется труднее, чем функцию md5() с дополнительными параметрами... Хотя Ваш вариант я считаю самым оптимальным в плане сохранения устойчивости к коллизиям и одновременного уменьшения размера хэша (благодаря использованию большего числа символов на одной позиции).
Если хранения данных далеко не триллион, тогда до 16 вполне можно. До 10 нет, при большом числе данных будут совпадения, а при маленьком отсутствует смысл такого сокращения.
фигня...
у вас есть функция wordtohex, причем в конце функции md5
Так что... Все в ваших руках
Chukcha, для Вас фигня, для меня нет :)
Я знакома с Javascript всего наполовину, меньше года назад начала пытаться с ним тесно работать. Но если Вы так написали, я подозреваю, у меня есть возможность изменить ход событий в моей md5()?
Если мне удастся сократить эти хэши хоть в 2 раза, это увеличит эффективность всего проекта более чем на 10%.
Правда, если убрать конвертацию wordtohex(), на выходе окажется число в десятичной системе. Что по длине будет еще больше, чем изначальный результат. Но зато его можно попробовать перевести в более экономную систему счисления прямо в этой функции. Главное, найти алгоритм... Да, и это будет уже не MD5, а производный хэш от него.
Chukcha, в любом случае, благодарю Вас тоже!